public async Task UpdateContact(MyContact myContact)
        {
            var client = await EnsureClientCreated();

            var contactToUpdate = await client.Me.Contacts.GetById(myContact.Id).ExecuteAsync();

            contactToUpdate.GivenName   = myContact.GivenName;
            contactToUpdate.Surname     = myContact.Surname;
            contactToUpdate.CompanyName = myContact.CompanyName;

            if (!string.IsNullOrEmpty(myContact.EmailAddress))
            {
                contactToUpdate.EmailAddresses[0].Address = myContact.EmailAddress;
                contactToUpdate.EmailAddresses[0].Name    = myContact.EmailAddress;
            }

            contactToUpdate.BusinessPhones[0] = !string.IsNullOrEmpty(myContact.BusinessPhone)
        ? myContact.BusinessPhone
        : null;

            contactToUpdate.HomePhones[0] = !string.IsNullOrEmpty(myContact.HomePhone)
        ? myContact.HomePhone
        : null;

            await contactToUpdate.UpdateAsync(true);

            await client.Context.SaveChangesAsync();
        }
        public async Task AddContact(MyContact myContact)
        {
            // acquire a O365 client to retrieve contacts
            var client = await EnsureClientCreated();

            // create new contact record
            var newContact = new Microsoft.Office365.OutlookServices.Contact {
                GivenName   = myContact.GivenName,
                Surname     = myContact.Surname,
                CompanyName = myContact.CompanyName
            };

            // add email address
            newContact.EmailAddresses.Add(new EmailAddress()
            {
                Address = myContact.EmailAddress,
                Name    = myContact.EmailAddress
            });

            // add phone numbers to collections
            newContact.HomePhones.Add(myContact.HomePhone);
            newContact.BusinessPhones.Add(myContact.BusinessPhone);

            // create the contact in O365
            await client.Me.Contacts.AddContactAsync(newContact);
        }
 public async Task<ActionResult> Create(MyContact contact) {
   if (Request.HttpMethod == "POST") {
     MyContactRepository repo = new MyContactRepository();
     await repo.AddContact(contact);
     return Redirect("/Contacts");
   } else {
     return View(contact);
   }
 }
    public async Task<ActionResult> Edit(string Id, MyContact contact) {
      MyContactRepository repo = new MyContactRepository();

      if (Request.HttpMethod == "POST") {
        await repo.UpdateContact(contact);
        return Redirect("/Contacts");
      } else {
        contact = await repo.GetContact(Id);
        return View(contact);
      }
    }
    public async Task UpdateContact(MyContact myContact) {
      var client = await EnsureClientCreated();
      var contactToUpdate = await client.Me.Contacts.GetById(myContact.Id).ExecuteAsync();
      contactToUpdate.GivenName = myContact.GivenName;
      contactToUpdate.Surname = myContact.Surname;
      contactToUpdate.CompanyName = myContact.CompanyName;

      if (!string.IsNullOrEmpty(myContact.EmailAddress)) {
        contactToUpdate.EmailAddresses[0].Address = myContact.EmailAddress;
        contactToUpdate.EmailAddresses[0].Name = myContact.EmailAddress;
      }

      contactToUpdate.BusinessPhones[0] = !string.IsNullOrEmpty(myContact.BusinessPhone)
        ? myContact.BusinessPhone
        : null;

      contactToUpdate.HomePhones[0] = !string.IsNullOrEmpty(myContact.HomePhone)
        ? myContact.HomePhone
        : null;

      await contactToUpdate.UpdateAsync(true);
      await client.Context.SaveChangesAsync();
    }
    public async Task AddContact(MyContact myContact) {
      // acquire a O365 client to retrieve contacts
      var client = await EnsureClientCreated();

      // create new contact record
      var newContact = new Microsoft.Office365.OutlookServices.Contact {
        GivenName = myContact.GivenName,
        Surname = myContact.Surname,
        CompanyName = myContact.CompanyName
      };

      // add email address
      newContact.EmailAddresses.Add(new EmailAddress() {
        Address = myContact.EmailAddress,
        Name = myContact.EmailAddress
      });

      // add phone numbers to collections
      newContact.HomePhones.Add(myContact.HomePhone);
      newContact.BusinessPhones.Add(myContact.BusinessPhone);

      // create the contact in O365
      await client.Me.Contacts.AddContactAsync(newContact);
    }