public async Task <IHttpActionResult> UpdateContactSkillAsync(int id, int contactSkillId, ContactSkillDto skillToUpdate, CancellationToken cancellationToken = default(CancellationToken)) { List <ContactSkillDto> contactSkills = await this.contactService.UpdateContactSkillAsync(id, contactSkillId, skillToUpdate, cancellationToken); return(this.Ok(contactSkills)); }
public async Task <List <ContactSkillDto> > UpdateContactSkillAsync(int contactId, int contactSkillId, ContactSkillDto skillToUpdate, CancellationToken cancellationToken) { this.securityService.Ensure(SecurityEntityTypes.ContactSkills, SecurityMethods.Update); if (skillToUpdate == null) { throw new ArgumentNullException(nameof(skillToUpdate)); } if (skillToUpdate.ContactId != contactId) { throw new ArgumentException("ContactId mismatch."); } if (skillToUpdate.Id != contactSkillId) { throw new ArgumentException("ContactSkillId mismatch."); } Contact contact = await this.GetContactModelAsync(contactId, cancellationToken); this.securityService.EnsureOwnership(contact); await this.CheckIfContactSkillExistsAsync(contactId, contactSkillId, cancellationToken); ContactSkill contactSkill = await this.GetContactSkillModelAsync(contactId, contactSkillId, true, cancellationToken); this.securityService.EnsureOwnership(contactSkill); contactSkill = this.mapper.Map(skillToUpdate, contactSkill); await this.contactRepository.UpdateContactSkillAsync(contactSkill, cancellationToken); await this.contactRepository.SaveChangesAsync(cancellationToken); return(await this.GetContactSkillsAsync(contactId, cancellationToken)); }