diff --git a/QRCoder/PayloadGenerator.cs b/QRCoder/PayloadGenerator.cs index 8f3bd0f8..397c4f77 100644 --- a/QRCoder/PayloadGenerator.cs +++ b/QRCoder/PayloadGenerator.cs @@ -383,6 +383,7 @@ public class ContactData : Payload private readonly string lastname; private readonly string nickname; private readonly string org; + private readonly string orgTitle; private readonly string phone; private readonly string mobilePhone; private readonly string workPhone; @@ -421,12 +422,15 @@ public class ContactData : Payload /// Country /// The address order format to use /// Memo text / notes - public ContactData(ContactOutputType outputType, string firstname, string lastname, string nickname = null, string phone = null, string mobilePhone = null, string workPhone = null, string email = null, DateTime? birthday = null, string website = null, string street = null, string houseNumber = null, string city = null, string zipCode = null, string country = null, string note = null, string stateRegion = null, AddressOrder addressOrder = AddressOrder.Default, string org = null) + /// Organisation/Company + /// Organisation/Company Title + public ContactData(ContactOutputType outputType, string firstname, string lastname, string nickname = null, string phone = null, string mobilePhone = null, string workPhone = null, string email = null, DateTime? birthday = null, string website = null, string street = null, string houseNumber = null, string city = null, string zipCode = null, string country = null, string note = null, string stateRegion = null, AddressOrder addressOrder = AddressOrder.Default, string org = null, string orgTitle = null) { this.firstname = firstname; this.lastname = lastname; this.nickname = nickname; this.org = org; + this.orgTitle = orgTitle; this.phone = phone; this.mobilePhone = mobilePhone; this.workPhone = workPhone; @@ -456,6 +460,8 @@ public override string ToString() payload += $"N:{firstname}{lastname}\r\n"; if (!string.IsNullOrEmpty(org)) payload += $"ORG:{org}\r\n"; + if (!string.IsNullOrEmpty(orgTitle)) + payload += $"TITLE:{orgTitle}\r\n"; if (!string.IsNullOrEmpty(phone)) payload += $"TEL:{phone}\r\n"; if (!string.IsNullOrEmpty(mobilePhone)) @@ -501,6 +507,10 @@ public override string ToString() { payload += $"ORG:" + org + "\r\n"; } + if (!string.IsNullOrEmpty(orgTitle)) + { + payload += $"TITLE:" + orgTitle + "\r\n"; + } if (!string.IsNullOrEmpty(phone)) { payload += $"TEL;"; diff --git a/QRCoderTests/PayloadGeneratorTests.cs b/QRCoderTests/PayloadGeneratorTests.cs index fc469062..f60da2b7 100644 --- a/QRCoderTests/PayloadGeneratorTests.cs +++ b/QRCoderTests/PayloadGeneratorTests.cs @@ -2747,6 +2747,7 @@ public void contactdata_generator_can_generate_payload_full_mecard() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2761,11 +2762,11 @@ public void contactdata_generator_can_generate_payload_full_mecard() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.MeCard; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("MECARD+\r\nN:Doe, John\r\nORG:Johnny's Badass Programming\r\nTEL:+4253212222\r\nTEL:+421701234567\r\nTEL:+4253211337\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nBDAY:19700201\r\nADR:,,Long street 42,12345,Super-Town,,Starlight Country\r\nURL:http://john.doe\r\nNICKNAME:Johnny"); + .ShouldBe("MECARD+\r\nN:Doe, John\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL:+4253212222\r\nTEL:+421701234567\r\nTEL:+4253211337\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nBDAY:19700201\r\nADR:,,Long street 42,12345,Super-Town,,Starlight Country\r\nURL:http://john.doe\r\nNICKNAME:Johnny"); } [Fact] @@ -2776,6 +2777,7 @@ public void contactdata_generator_can_generate_payload_full_mecard_reversed() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2790,11 +2792,11 @@ public void contactdata_generator_can_generate_payload_full_mecard_reversed() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.MeCard; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, addressOrder: PayloadGenerator.ContactData.AddressOrder.Reversed, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, addressOrder: PayloadGenerator.ContactData.AddressOrder.Reversed, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("MECARD+\r\nN:Doe, John\r\nORG:Johnny's Badass Programming\r\nTEL:+4253212222\r\nTEL:+421701234567\r\nTEL:+4253211337\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nBDAY:19700201\r\nADR:,,42 Long street,Super-Town,,12345,Starlight Country\r\nURL:http://john.doe\r\nNICKNAME:Johnny"); + .ShouldBe("MECARD+\r\nN:Doe, John\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL:+4253212222\r\nTEL:+421701234567\r\nTEL:+4253211337\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nBDAY:19700201\r\nADR:,,42 Long street,Super-Town,,12345,Starlight Country\r\nURL:http://john.doe\r\nNICKNAME:Johnny"); } [Fact] @@ -2805,6 +2807,7 @@ public void contactdata_generator_can_generate_payload_full_vcard21() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2819,11 +2822,11 @@ public void contactdata_generator_can_generate_payload_full_vcard21() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.VCard21; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("BEGIN:VCARD\r\nVERSION:2.1\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTEL;HOME;VOICE:+4253212222\r\nTEL;HOME;CELL:+421701234567\r\nTEL;WORK;VOICE:+4253211337\r\nADR;HOME;PREF:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nEND:VCARD"); + .ShouldBe("BEGIN:VCARD\r\nVERSION:2.1\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL;HOME;VOICE:+4253212222\r\nTEL;HOME;CELL:+421701234567\r\nTEL;WORK;VOICE:+4253211337\r\nADR;HOME;PREF:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nEND:VCARD"); } [Fact] @@ -2834,6 +2837,7 @@ public void contactdata_generator_can_generate_payload_full_vcard3() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2848,11 +2852,11 @@ public void contactdata_generator_can_generate_payload_full_vcard3() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.VCard3; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("BEGIN:VCARD\r\nVERSION:3.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTEL;TYPE=HOME,VOICE:+4253212222\r\nTEL;TYPE=HOME,CELL:+421701234567\r\nTEL;TYPE=WORK,VOICE:+4253211337\r\nADR;TYPE=HOME,PREF:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); + .ShouldBe("BEGIN:VCARD\r\nVERSION:3.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL;TYPE=HOME,VOICE:+4253212222\r\nTEL;TYPE=HOME,CELL:+421701234567\r\nTEL;TYPE=WORK,VOICE:+4253211337\r\nADR;TYPE=HOME,PREF:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); } [Fact] @@ -2863,6 +2867,7 @@ public void contactdata_generator_can_generate_payload_full_vcard4() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2877,11 +2882,11 @@ public void contactdata_generator_can_generate_payload_full_vcard4() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.VCard4; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTEL;TYPE=home,voice;VALUE=uri:tel:+4253212222\r\nTEL;TYPE=home,cell;VALUE=uri:tel:+421701234567\r\nTEL;TYPE=work,voice;VALUE=uri:tel:+4253211337\r\nADR;TYPE=home,pref:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); + .ShouldBe("BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL;TYPE=home,voice;VALUE=uri:tel:+4253212222\r\nTEL;TYPE=home,cell;VALUE=uri:tel:+421701234567\r\nTEL;TYPE=work,voice;VALUE=uri:tel:+4253211337\r\nADR;TYPE=home,pref:;;Long street 42;12345;Super-Town;;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); } [Fact] @@ -2892,6 +2897,7 @@ public void contactdata_generator_can_generate_payload_full_vcard4_reverse() var lastname = "Doe"; var nickname = "Johnny"; var org = "Johnny's Badass Programming"; + var orgTitle = "Badass Manager"; var phone = "+4253212222"; var mobilePhone = "+421701234567"; var workPhone = "+4253211337"; @@ -2906,11 +2912,11 @@ public void contactdata_generator_can_generate_payload_full_vcard4_reverse() var note = "Badass programmer."; var outputType = PayloadGenerator.ContactData.ContactOutputType.VCard4; - var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, addressOrder: PayloadGenerator.ContactData.AddressOrder.Reversed, org: org); + var generator = new PayloadGenerator.ContactData(outputType, firstname, lastname, nickname, phone, mobilePhone, workPhone, email, birthday, website, street, houseNumber, city, zipCode, country, note, addressOrder: PayloadGenerator.ContactData.AddressOrder.Reversed, org: org, orgTitle: orgTitle); generator .ToString() - .ShouldBe("BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTEL;TYPE=home,voice;VALUE=uri:tel:+4253212222\r\nTEL;TYPE=home,cell;VALUE=uri:tel:+421701234567\r\nTEL;TYPE=work,voice;VALUE=uri:tel:+4253211337\r\nADR;TYPE=home,pref:;;42 Long street;Super-Town;;12345;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); + .ShouldBe("BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;\r\nFN:John Doe\r\nORG:Johnny's Badass Programming\r\nTITLE:Badass Manager\r\nTEL;TYPE=home,voice;VALUE=uri:tel:+4253212222\r\nTEL;TYPE=home,cell;VALUE=uri:tel:+421701234567\r\nTEL;TYPE=work,voice;VALUE=uri:tel:+4253211337\r\nADR;TYPE=home,pref:;;42 Long street;Super-Town;;12345;Starlight Country\r\nBDAY:19700201\r\nURL:http://john.doe\r\nEMAIL:me@john.doe\r\nNOTE:Badass programmer.\r\nNICKNAME:Johnny\r\nEND:VCARD"); } [Fact]