public async Task <ActionResponse <ExamCommissionDto> > Insert(ExamCommissionDto entityDto) { try { List <UserExamCommissionDto> commissionMembers = new List <UserExamCommissionDto>(entityDto.CommissionMembers); var entityToAdd = mapper.Map <ExamCommissionDto, ExamCommission>(entityDto); unitOfWork.GetGenericRepository <ExamCommission>().Add(entityToAdd); unitOfWork.Save(); mapper.Map(entityToAdd, entityDto); entityDto.CommissionMembers = new List <UserExamCommissionDto>(commissionMembers); if ((await ModifyExamTeachers(entityDto)).IsNotSuccess(out ActionResponse <ExamCommissionDto> actionResponse, out entityDto)) { return(actionResponse); } if ((await GetById(entityToAdd.Id)).IsNotSuccess(out actionResponse, out entityDto)) { return(actionResponse); } return(await ActionResponse <ExamCommissionDto> .ReturnSuccess(entityDto)); } catch (Exception) { return(await ActionResponse <ExamCommissionDto> .ReturnError("Greška prilikom unosa ispitne komisije.")); } }
public async Task <ActionResponse <ExamCommissionDto> > Update(ExamCommissionDto entityDto) { try { var entityToUpdate = mapper.Map <ExamCommissionDto, ExamCommission>(entityDto); unitOfWork.GetGenericRepository <ExamCommission>().Update(entityToUpdate); if ((await ModifyExamTeachers(entityDto)).IsNotSuccess(out ActionResponse <ExamCommissionDto> response, out entityDto)) { return(response); } unitOfWork.Save(); if ((await GetById(entityToUpdate.Id)).IsNotSuccess(out response, out entityDto)) { return(response); } unitOfWork.GetContext().Entry(entityToUpdate).State = EntityState.Detached; entityToUpdate = null; return(await ActionResponse <ExamCommissionDto> .ReturnSuccess(entityDto)); } catch (Exception) { return(await ActionResponse <ExamCommissionDto> .ReturnError("Greška prilikom ažuriranja ispitne komisije.")); } }
public async Task <ActionResponse <ExamCommissionDto> > ModifyExamTeachers(ExamCommissionDto examCommission) { try { var entity = unitOfWork.GetGenericRepository <ExamCommission>() .FindBy(e => e.Id == examCommission.Id.Value, includeProperties: "UserExamCommissions"); var currentCommissionMembers = entity.UserExamCommissions.ToList(); var newCommissionMembers = examCommission.CommissionMembers; var membersToRemove = mapper.Map <List <UserExamCommissionDto> >(currentCommissionMembers.Where(cem => !newCommissionMembers .Select(ncm => ncm.Id).Contains(cem.Id))); var membersToAdd = newCommissionMembers .Where(ncm => !ncm.Id.HasValue || !currentCommissionMembers.Select(ccm => ccm.Id).Contains(ncm.Id.Value)) .Select(ncm => { ncm.ExamCommissionId = examCommission.Id; return(ncm); }) .ToList(); var membersToModify = newCommissionMembers .Where(ncm => ncm.Id.HasValue && currentCommissionMembers.Select(ccm => ccm.Id).Contains(ncm.Id.Value)) .ToList(); if ((await RemoveExamTeachers(membersToRemove)) .IsNotSuccess(out ActionResponse <List <UserExamCommissionDto> > actionResponse)) { return(await ActionResponse <ExamCommissionDto> .ReturnError("Neuspješna promjena nastavnika u ispitnoj komisiji.")); } if ((await AddExamTeachers(membersToAdd)) .IsNotSuccess(out actionResponse)) { return(await ActionResponse <ExamCommissionDto> .ReturnError("Neuspješna promjena nastavnika u ispitnoj komisiji.")); } if ((await ModifyCommissionMembers(membersToModify)) .IsNotSuccess(out actionResponse)) { return(await ActionResponse <ExamCommissionDto> .ReturnError(actionResponse.Message)); } return(await ActionResponse <ExamCommissionDto> .ReturnSuccess(examCommission, "Uspješno izmijenjeni članovi ispitne komisije.")); } catch (Exception) { return(await ActionResponse <ExamCommissionDto> .ReturnError("Greška prilikom ažuriranja članova ispitne komisije.")); } }
public async Task <ActionResponse <ExamCommissionDto> > Update([FromBody] ExamCommissionDto request) { return(await examCommissionService.Update(request)); }