private void CreateOrUpdateReport(ReportViewModel reportViewModel, int stepIndex) { var allPublications = db.Publication.ToList(); if (reportViewModel.ID == null && !db.Reports.Any(x => x.ID == reportViewModel.ID)) { var reportToCreate = ReportConverter.ConvertToEntity(reportViewModel); reportToCreate.User = db.Users.Find(User.Identity.GetUserId()); reportToCreate.ThemeOfScientificWork = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.ThemeOfScientificWorkId).FirstOrDefault(); reportToCreate.PrintedPublication = allPublications.Where(x => reportViewModel.PrintedPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); reportToCreate.RecomendedPublication = allPublications.Where(x => reportViewModel.RecomendedPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); reportToCreate.AcceptedToPrintPublication = allPublications.Where(x => reportViewModel.AcceptedToPrintPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); db.Reports.Add(reportToCreate); db.SaveChanges(); } else { var report = db.Reports.Find(reportViewModel.ID); switch (stepIndex) { case 0: report.PrintedPublication = allPublications.Where(x => reportViewModel.PrintedPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); report.RecomendedPublication = allPublications.Where(x => reportViewModel.RecomendedPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); report.AcceptedToPrintPublication = allPublications.Where(x => reportViewModel.AcceptedToPrintPublication.Any(y => y.Id == x.ID && y.Checked)).ToList(); break; case 1: report.ThemeOfScientificWork = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.ThemeOfScientificWorkId).FirstOrDefault(); report.ThemeOfScientificWorkDescription = reportViewModel.ThemeOfScientificWorkDescription; break; case 2: report.MembershipInCouncils = reportViewModel.MembershipInCouncils; report.Other = reportViewModel.Other; report.ParticipationInGrands = reportViewModel.ParticipationInGrands; report.PatentForInevention = reportViewModel.PatentForInevention; report.ApplicationForInevention = reportViewModel.ApplicationForInevention; report.ReviewForTheses = reportViewModel.ReviewForTheses; report.ScientificControlDoctorsWork = reportViewModel.ScientificControlDoctorsWork; report.ScientificControlStudentsWork = reportViewModel.ScientificControlStudentsWork; report.ScientificTrainings = reportViewModel.ScientificTrainings; break; case 3: report.Date = reportViewModel.Date; report.Protocol = reportViewModel.Protocol; break; default: return; } db.SaveChanges(); } }
private void CreateOrUpdateReport(CathedraReportViewModel reportViewModel, int stepIndex) { var allPublications = db.Publication.ToList(); if (reportViewModel.ID == null && !db.Reports.Any(x => x.ID == reportViewModel.ID)) { var reportToCreate = ReportConverter.ConvertToEntity(reportViewModel); reportToCreate.User = db.Users.Find(User.Identity.GetUserId()); reportToCreate.BudgetTheme = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.BudgetThemeId).FirstOrDefault(); if (reportViewModel.PrintedPublicationBudgetTheme != null) { reportToCreate.PrintedPublicationBudgetTheme = allPublications .Where(x => reportViewModel.PrintedPublicationBudgetTheme.Any(y => y.Id == x.ID && y.Checked)).ToList(); } db.CathedraReport.Add(reportToCreate); db.SaveChanges(); } else { var report = db.CathedraReport.Find(reportViewModel.ID); switch (stepIndex) { case 0: report.BudgetTheme = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.BudgetThemeId).FirstOrDefault(); if (reportViewModel.PrintedPublicationBudgetTheme != null) { report.PrintedPublicationBudgetTheme = allPublications .Where(x => reportViewModel.PrintedPublicationBudgetTheme.Any(y => y.Id == x.ID && y.Checked)).ToList(); } report.AllDescriptionBudgetTheme = reportViewModel.AllDescriptionBudgetTheme; report.CVBudgetTheme = reportViewModel.CVBudgetTheme; report.ApplicationAndPatentsOnInventionBudgetTheme = reportViewModel.ApplicationAndPatentsOnInventionBudgetTheme; report.OtherBudgetTheme = reportViewModel.OtherBudgetTheme; report.DefensesOfCoworkersBudgetTheme = reportViewModel.DefensesOfCoworkersBudgetTheme; break; case 1: report.ThemeInWorkTime = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.ThemeInWorkTimeId).FirstOrDefault(); if (reportViewModel.PrintedPublicationThemeInWorkTime != null) { report.PrintedPublicationThemeInWorkTime = allPublications .Where(x => reportViewModel.PrintedPublicationThemeInWorkTime.Any(y => y.Id == x.ID && y.Checked)).ToList(); } report.AllDescriptionThemeInWorkTime = reportViewModel.AllDescriptionThemeInWorkTime; report.CVThemeInWorkTime = reportViewModel.CVThemeInWorkTime; report.ApplicationAndPatentsOnInventionThemeInWorkTime = reportViewModel.ApplicationAndPatentsOnInventionThemeInWorkTime; report.OtherThemeInWorkTime = reportViewModel.OtherThemeInWorkTime; report.DefensesOfCoworkersThemeInWorkTime = reportViewModel.DefensesOfCoworkersThemeInWorkTime; break; case 2: report.HospDohovirTheme = db.ThemeOfScientificWork.Where(x => x.ID == reportViewModel.HospDohovirThemeId).FirstOrDefault(); if (reportViewModel.PrintedPublicationHospDohovirTheme != null) { report.PrintedPublicationHospDohovirTheme = allPublications .Where(x => reportViewModel.PrintedPublicationHospDohovirTheme.Any(y => y.Id == x.ID && y.Checked)).ToList(); } report.AllDescriptionHospDohovirTheme = reportViewModel.AllDescriptionHospDohovirTheme; report.CVHospDohovirTheme = reportViewModel.CVHospDohovirTheme; report.ApplicationAndPatentsOnInventionHospDohovirTheme = reportViewModel.ApplicationAndPatentsOnInventionHospDohovirTheme; report.OtherHospDohovirTheme = reportViewModel.OtherHospDohovirTheme; report.DefensesOfCoworkersHospDohovirTheme = reportViewModel.DefensesOfCoworkersHospDohovirTheme; break; case 3: report.AchivementSchool = reportViewModel.AchivementSchool; report.OtherFormsOfScientificWork = reportViewModel.OtherFormsOfScientificWork; report.CooperationWithAcadamyOfScience = reportViewModel.CooperationWithAcadamyOfScience; report.CooperationWithForeignScientificInstitution = reportViewModel.CooperationWithForeignScientificInstitution; report.StudentsWorks = reportViewModel.StudentsWorks; report.ConferencesInUniversity = reportViewModel.ConferencesInUniversity; report.ApplicationOnInvention = reportViewModel.ApplicationOnInvention; report.Patents = reportViewModel.Patents; report.Materials = reportViewModel.Materials; report.PropositionForNewForms = reportViewModel.PropositionForNewForms; break; case 4: report.Date = reportViewModel.Date; report.Protocol = reportViewModel.Protocol; break; default: return; } db.SaveChanges(); } }