Пример #1
0
        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));
        }
Пример #2
0
        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));
        }