public async Task <ActionResponse <InstitutionDto> > Insert(InstitutionDto institution) { try { using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { List <FileDto> files = institution.Files != null ? new List <FileDto>(institution.Files) : new List <FileDto>(); GoverningCouncilDto governingCouncil = institution.GoverningCouncil; var institutionToAdd = mapper.Map <InstitutionDto, Institution>(institution); unitOfWork.GetGenericRepository <Institution>().Add(institutionToAdd); unitOfWork.Save(); institution.Id = institutionToAdd.Id; institution.Files = files; if ((await ModifyFiles(institution)) .IsNotSuccess(out ActionResponse <InstitutionDto> fileResponse, out institution)) { return(fileResponse); } institution.GoverningCouncil = governingCouncil; institution.GoverningCouncil.InstitutionId = institution.Id; if ((await ModifyGoverningCouncil(institution)).IsNotSuccess(out fileResponse, out institution)) { return(fileResponse); } scope.Complete(); } return(await GetInstitution()); } catch (Exception) { return(await ActionResponse <InstitutionDto> .ReturnError("Greška prilikom unosa podataka za instituciju.")); } }
public async Task <ActionResponse <GoverningCouncilDto> > ModifyCouncilMembers(GoverningCouncilDto entityDto) { try { var entity = unitOfWork.GetGenericRepository <GoverningCouncil>() .FindBy(e => e.Id == entityDto.Id.Value, includeProperties: "GoverningCouncilMembers"); var currentCouncilMembers = entity.GoverningCouncilMembers.ToList(); var newCouncilMembers = entityDto.GoverningCouncilMembers; var membersToRemove = mapper.Map <List <GoverningCouncilMemberDto> >(currentCouncilMembers.Where(cem => !newCouncilMembers .Select(ncm => ncm.Id).Contains(cem.Id))); var membersToAdd = newCouncilMembers .Where(ncm => !ncm.Id.HasValue || !currentCouncilMembers.Select(ccm => ccm.Id).Contains(ncm.Id.Value)) .Select(ncm => { ncm.GoverningCouncilId = entity.Id; return(ncm); }) .ToList(); var membersToModify = newCouncilMembers .Where(ncm => ncm.Id.HasValue && currentCouncilMembers.Select(ccm => ccm.Id).Contains(ncm.Id.Value)) .ToList(); if ((await RemoveCouncilMembers(membersToRemove)) .IsNotSuccess(out ActionResponse <List <GoverningCouncilMemberDto> > actionResponse)) { return(await ActionResponse <GoverningCouncilDto> .ReturnError("Neuspješna promjena članova upravnog vijeća.")); } if ((await AddCouncilMembers(membersToAdd)) .IsNotSuccess(out actionResponse)) { return(await ActionResponse <GoverningCouncilDto> .ReturnError("Neuspješna promjena članova upravnog vijeća.")); } if ((await UpdateCouncilMembers(membersToModify)) .IsNotSuccess(out actionResponse)) { return(await ActionResponse <GoverningCouncilDto> .ReturnError(actionResponse.Message)); } return(await ActionResponse <GoverningCouncilDto> .ReturnSuccess(entityDto, "Uspješno ažurirani članovi upravnog vijeća.")); } catch (Exception) { return(await ActionResponse <GoverningCouncilDto> .ReturnError("Greška prilikom ažuriranja članova upravnog vijeća.")); } }
public async Task <ActionResponse <GoverningCouncilDto> > UpdateGoverningCouncil(GoverningCouncilDto entityDto) { try { List <GoverningCouncilMemberDto> councilMembers = new List <GoverningCouncilMemberDto>(entityDto.GoverningCouncilMembers); var entityToUpdate = mapper.Map <GoverningCouncilDto, GoverningCouncil>(entityDto); unitOfWork.GetGenericRepository <GoverningCouncil>().Update(entityToUpdate); unitOfWork.Save(); mapper.Map(entityToUpdate, entityDto); entityDto.GoverningCouncilMembers = councilMembers; if ((await ModifyCouncilMembers(entityDto)) .IsNotSuccess(out ActionResponse <GoverningCouncilDto> response, out entityDto)) { return(response); } return(await ActionResponse <GoverningCouncilDto> .ReturnSuccess(entityDto, "Upravno vijeće za instituciju uspješno ažurirano.")); } catch (Exception) { return(await ActionResponse <GoverningCouncilDto> .ReturnError("Greška prilikom unosa podataka za upravno vijeće.")); } }