public async Task <ActionResponse <PlanDaySubjectDto> > InsertPlanDaySubject(PlanDaySubjectDto entityDto) { try { List <PlanDaySubjectThemeDto> planDaySubjectThemes = new List <PlanDaySubjectThemeDto>(entityDto.PlanDaySubjectThemes); entityDto.PlanDaySubjectThemeIds = null; entityDto.PlanDaySubjectThemes = null; var entityToAdd = mapper.Map <PlanDaySubjectDto, PlanDaySubject>(entityDto); unitOfWork.GetGenericRepository <PlanDaySubject>().Add(entityToAdd); unitOfWork.Save(); mapper.Map(entityToAdd, entityDto); entityDto.PlanDaySubjectThemes = planDaySubjectThemes.Select(pd => { pd.PlanDaySubjectId = entityDto.Id; return(pd); }).ToList(); if ((await ModifyPlanDaySubjectsThemes(entityDto)) .IsNotSuccess(out ActionResponse <PlanDaySubjectDto> themesResponse, out entityDto)) { return(themesResponse); } return(await ActionResponse <PlanDaySubjectDto> .ReturnSuccess(entityDto, "Predmet uspješno dodan u dan plana.")); } catch (Exception) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError("Greška prilikom dodavanja predmeta u dan plana.")); } }
public async Task <ActionResponse <PlanDaySubjectDto> > ModifyPlanDaySubject(PlanDaySubjectDto entityDto) { try { List <PlanDaySubjectThemeDto> planDaySubjectThemes = new List <PlanDaySubjectThemeDto>(entityDto.PlanDaySubjectThemes); entityDto.PlanDaySubjectThemeIds = null; entityDto.PlanDaySubjectThemes = null; var entityToUpdate = unitOfWork.GetGenericRepository <PlanDaySubject>().FindSingle(entityDto.Id.Value); mapper.Map(entityDto, entityToUpdate); unitOfWork.GetGenericRepository <PlanDaySubject>().Update(entityToUpdate); unitOfWork.Save(); entityDto.PlanDaySubjectThemes = planDaySubjectThemes; if ((await ModifyPlanDaySubjectsThemes(entityDto)) .IsNotSuccess(out ActionResponse <PlanDaySubjectDto> themesResponse, out entityDto)) { return(themesResponse); } return(await ActionResponse <PlanDaySubjectDto> .ReturnSuccess(mapper.Map(entityToUpdate, entityDto), "Predmet u danu plana uspješno ažuriran.")); } catch (Exception) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError("Greška prilikom ažuriranja predmeta u danu plana.")); } }
public async Task <ActionResponse <PlanDaySubjectDto> > ModifyPlanDaySubjectsThemes(PlanDaySubjectDto entityDto) { var entity = unitOfWork.GetGenericRepository <PlanDaySubject>() .FindBy(p => p.Id == entityDto.Id, includeProperties: "PlanDaySubjectThemes.Theme"); var currentThemes = mapper.Map <List <PlanDaySubjectTheme>, List <PlanDaySubjectThemeDto> >(entity.PlanDaySubjectThemes.ToList()); var themesToRemove = currentThemes.Where(cd => !entityDto.PlanDaySubjectThemes .Select(pdst => pdst.ThemeId.Value) .Contains(cd.ThemeId.Value)) .ToList(); var themesToAdd = entityDto.PlanDaySubjectThemes .Where(nt => !currentThemes.Select(cd => cd.ThemeId.Value).Contains(nt.ThemeId.Value)) .Select(pds => new PlanDaySubjectThemeDto { ThemeId = pds.ThemeId.Value, PlanDaySubjectId = entity.Id, HoursNumber = pds.HoursNumber, ClassTypes = pds.ClassTypes, PerfomingType = pds.PerfomingType, }).ToList(); var themesToModify = entityDto.PlanDaySubjectThemes.Where(cd => currentThemes .Select(pdst => pdst.ThemeId.Value) .Contains(cd.ThemeId.Value)).ToList(); if ((await AddThemesToPlanDaySubject(themesToAdd)) .IsNotSuccess(out ActionResponse <List <PlanDaySubjectThemeDto> > actionResponse, out themesToAdd)) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError("Neuspješno ažuriranje predmeta u danu plana.")); } if ((await ModifyThemesInPlanDaySubject(themesToModify)).IsNotSuccess(out actionResponse, out themesToModify)) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError("Neuspješno ažuriranje predmeta u danu plana.")); } if ((await RemoveThemesFromPlanDaySubject(themesToRemove)) .IsNotSuccess(out actionResponse)) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError(actionResponse.Message)); } return(await ActionResponse <PlanDaySubjectDto> .ReturnSuccess(mapper.Map(entity, entityDto), "Uspješno izmijenjeni dani plana.")); }
public async Task <ActionResponse <PlanDaySubjectDto> > RemoveSubjectFromPlanDay(PlanDaySubjectDto entityDto) { try { unitOfWork.GetGenericRepository <PlanDaySubject>().Delete(entityDto.Id.Value); unitOfWork.Save(); return(await ActionResponse <PlanDaySubjectDto> .ReturnSuccess(null, "Predmet uspješno izbrisan iz planskog dana.")); } catch (Exception) { return(await ActionResponse <PlanDaySubjectDto> .ReturnError("Greška prilikom micanja predmeta iz planskog dana.")); } }