public async Task <IActionResult> UpdateContactAsync(UpdateContactViewModel model)
        {
            try
            {
                ContactDto contact = new ContactDto
                {
                    Id                   = model.Contact.Id,
                    Name                 = model.Contact.Name,
                    TelephoneNumber1     = model.Contact.TelephoneNumber1,
                    TelephoneNumber2     = model.Contact.TelephoneNumber2,
                    Address              = model.Contact.Address,
                    Email                = model.Contact.Email,
                    LegalOrNaturalPerson = model.Contact.LegalOrNaturalPerson,
                    Profession           = model.Contact.Profession,
                    CompanyId            = model.Contact.CompanyId
                };

                await contactService.UpdateAsync(contact);

                return(RedirectToAction("ContactsList", "Contact"));
            }
            catch (Exception ex)
            {
                ErrorViewModel errorModel = new ErrorViewModel();
                errorModel.ErrorMessage = ex.Message.ToString();

                return(View("Views/Shared/Error.cshtml", errorModel));
            }
        }
 public IHttpActionResult Put(UpdateContactViewModel modifiedModel)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     _service.Update(_mapper.Map <Contact>(modifiedModel));
     return(Ok());
 }
示例#3
0
        public async Task <ActionResult <Contact> > UpdateOrInsertContact([FromRoute] Guid contactId,
                                                                          UpdateContactViewModel model)
        {
            // If we do not want to Upsert functionality then return NotFound
            //if (!await this.service.IsExistingAsync(contactId))
            //{
            //    return NotFound();
            //}

            if (!await this.service.IsExistingAsync(contactId))
            {
                // Create
                var newContact = new Contact()
                {
                    Id      = contactId,
                    Address = model.Address,
                    Name    = model.Name
                };

                await this.service.AddAsync(newContact);

                return(CreatedAtRoute(nameof(ContactsController.GetContactById), new { contactId = newContact.Id },
                                      new ContactViewModel()
                {
                    Id = newContact.Id,
                    Name = newContact.Name,
                    Address = newContact.Address
                }));
            }
            else
            {
                // Update
                var contact = new Contact()
                {
                    Id = contactId, Name = model.Name, Address = model.Address
                };
                await this.service.UpdateAsync(contact);

                return(NoContent());
            }
        }
示例#4
0
        public async Task <ActionResult <ContactViewModel> > PatchOrInsertContact([FromRoute] Guid contactId,
                                                                                  JsonPatchDocument <UpdateContactViewModel> patchDocument)
        {
            // If we do not want to Upsert functionality then return NotFound
            //if (!await this.service.IsExistingAsync(contactId))
            //{
            //    return NotFound();
            //}

            if (!await this.service.IsExistingAsync(contactId))
            {
                // insert
                var updateViewModel = new UpdateContactViewModel();
                patchDocument.ApplyTo(updateViewModel, ModelState); // to get the correct ModelState, install Microsoft.AspNetCore.Mvc.NewtonsoftJson

                if (!TryValidateModel(updateViewModel))
                {
                    return(ValidationProblem(ModelState));
                }

                var newContact = new Contact()
                {
                    Id      = contactId,
                    Name    = updateViewModel.Name,
                    Address = updateViewModel.Address
                };
                await this.service.AddAsync(newContact);

                var viewModel = new ContactViewModel()
                {
                    Id      = newContact.Id,
                    Name    = newContact.Name,
                    Address = newContact.Address
                };

                return(CreatedAtRoute(nameof(ContactsController.GetContactById),
                                      new { contactId = viewModel.Id }, viewModel));
            }
            else
            {
                var contact = await this.service.GetAsync(contactId);

                var updateViewModel = new UpdateContactViewModel()
                {
                    Name    = contact.Name,
                    Address = contact.Address
                };

                patchDocument.ApplyTo(updateViewModel, ModelState);

                if (!TryValidateModel(updateViewModel))
                {
                    return(ValidationProblem(ModelState));
                }

                var updatedContact = new Contact()
                {
                    Id      = contactId,
                    Name    = updateViewModel.Name,
                    Address = updateViewModel.Address
                };

                await this.service.UpdateAsync(updatedContact);

                return(NoContent());
            }
        }