private void CheckSameSkladniki(PryzmaRecord pryzmaRecord, SkladnikiViewModel viewModel) { var otherPryzma = pryzmaRepository .QueryByDoswiadczenieId(pryzmaRecord.Doswiadczenie.Id) .ToList() .FirstOrDefault(p => p.Id != pryzmaRecord.Id); if (otherPryzma == null || !otherPryzma.Skladniki.Any()) { return; } var skladniki = viewModel.Skladniki.Select(s => s.Skladnik).ToList(); var skladnikiOther = skladnikRepository.QueryByPryzma(otherPryzma.Id) .Select(s => s.Skladnik) .ToList(); if (skladniki.OrderBy(s => s).SequenceEqual(skladnikiOther.OrderBy(s => s))) { return; } Notifier.AddError( string.Format("Pryzma musi zawierać tylko takie same składniki jak poprzednio dodana pryzma, tj. {0}", string.Join(", ", skladnikiOther.Select(s => s.ToDescription())))); ModelState.AddModelError(string.Empty, string.Empty); }
public ActionResult Delete(int id) { var pryzmaRecord = pryzmaRepository.Get(id); if (pryzmaRecord.Doswiadczenie.Started) { Notifier.AddError("Doświadczenie zostało wystartowane. Brak możliwości usunięcia pryzm."); return(RedirectToAction("Index", new { id = pryzmaRecord.Doswiadczenie.Id })); } foreach (var skladnikRecord in pryzmaRecord.Skladniki.ToList()) { skladnikRepository.Remove(skladnikRecord); pryzmaRecord.Skladniki.Remove(skladnikRecord); } foreach (var pryzmaStartRecord in pryzmaRecord.Starts.ToList()) { pryzmaStartRepository.Remove(pryzmaStartRecord); pryzmaRecord.Starts.Remove(pryzmaStartRecord); } pryzmaRepository.Remove(pryzmaRecord); return(RedirectToAction("Index", new { id = pryzmaRecord.Doswiadczenie.Id })); }
public ActionResult Delete(int id) { var doswiadczeniePomiar = doswiadczeniePomiarRepository.Get(id); if (!doswiadczeniePomiar.Doswiadczenie.Started) { Notifier.AddError("Nie można modyfikować pomiarów nie wystartowanego doświadczenia. Rozpocznij doświadczenie, żeby modyfikować."); return(RedirectToAction("Index", "Doswiadczenie")); } var doswiadczenieId = doswiadczeniePomiar.Doswiadczenie.Id; if (doswiadczeniePomiar.Dzien != doswiadczeniePomiarRepository.Query().Max(p => p.Dzien)) { throw new Exception("Można usuwać tylko ostatni dzień pomiarów"); } foreach (var pryzmaPomiarRecord in doswiadczeniePomiar.Pomiary) { pryzmaPomiarRepository.Remove(pryzmaPomiarRecord); } doswiadczeniePomiarRepository.Remove(doswiadczeniePomiar); return(RedirectToAction("Index", new { id = doswiadczenieId })); }
private void CheckDistinctSkladniki(SkladnikiViewModel viewModel) { var isNotDistinct = viewModel.Skladniki.Select(s => s.Skladnik).GroupBy(s => s).Any(g => g.Count() > 1); if (isNotDistinct) { Notifier.AddError("Pryzma nie może zawierać wielokrotnie tych samych składników"); ModelState.AddModelError(string.Empty, string.Empty); } }
public ActionResult Create(int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); if (!doswiadczenieRecord.Started) { Notifier.AddError("Nie można modyfikować pomiarów nie wystartowanego doświadczenia. Rozpocznij doświadczenie, żeby modyfikować."); return(RedirectToAction("Index", "Doswiadczenie")); } var viewModel = GetViewModel(doswiadczenieRecord); ViewBag.Create = true; return(View(viewModel)); }
public ActionResult Stop(FormCollection collection, int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); var viewModel = new DoswiadczenieStopViewModel(doswiadczenieRecord); TryUpdateModel(viewModel); if (ModelState.IsValid) { // ReSharper disable once PossibleInvalidOperationException if (viewModel.DataStop.Value < viewModel.Doswiadczenie.DataStart) { ModelState.AddModelError("DataStop", string.Format("Data zakończenia doświadczenia nie może być mniejsza niż data rozpoczęcia doświadczenia, tj. {0}", viewModel.Doswiadczenie.DataStart.Value.ToString("yyyy-MM-dd"))); } } if (ModelState.IsValid && !doswiadczenieRecord.Stopped) { foreach (var pryzmaStop in viewModel.Pryzmy) { var pryzma = pryzmaRepository.Get(pryzmaStop.PryzmaId); pryzmaStop.Record.Pryzma = pryzma; pryzmaStopRepository.Add(pryzmaStop.Record); } doswiadczenieRecord.Stopped = true; doswiadczenieRecord.DataStop = viewModel.DataStop; return(RedirectToAction("Index")); } if (doswiadczenieRecord.Stopped) { Notifier.AddError("Nie można zakończyć już zakończonego doświadczenia."); } foreach (var pryzmaStart in viewModel.Pryzmy) { pryzmaStart.SetPryzma(pryzmaRepository.Get(pryzmaStart.PryzmaId)); } viewModel.Doswiadczenie = doswiadczenieRecord; UnitOfWork.Rollback(); return(View(viewModel)); }
public ActionResult Create(FormCollection collection, int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); var viewModel = GetViewModel(doswiadczenieRecord); TryUpdateModel(viewModel); if (ModelState.IsValid) { var daty = doswiadczenieRecord.Pomiary.Select(p => p.Data).ToList(); Func <DateTime, bool> validDate = d => daty.Any() ? d > daty.Max(dd => dd) : d >= doswiadczenieRecord.DataStart; if (!validDate(viewModel.Data)) { Notifier.AddError("Data musi być większa lub równa niż data startowa doświadczenia lub gdy zostało już dodany chociaż jeden pomiar - większa od daty ostatniego pomiaru."); ModelState.AddModelError("_FORM", string.Empty); } } if (ModelState.IsValid) { doswiadczeniePomiarRepository.Add(viewModel.Record); foreach (var pomiarViewModel in viewModel.Pomiary) { CreatePomiarRecord(viewModel, pomiarViewModel); } foreach (var pomiarViewModel in viewModel.Przeplywy) { CreatePomiarRecord(viewModel, pomiarViewModel); } foreach (var pomiarViewModel in viewModel.StanyLicznikow) { CreatePomiarRecord(viewModel, pomiarViewModel); } return(RedirectToAction("Index", new { id })); } UnitOfWork.Rollback(); ViewBag.Create = true; return(View(viewModel)); }
public ActionResult Index(int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); if (!doswiadczenieRecord.Started) { Notifier.AddError("Nie można modyfikować pomiarów nie wystartowanego doświadczenia. Rozpocznij doświadczenie, żeby modyfikować."); return(RedirectToAction("Index", "Doswiadczenie")); } var viewModel = new DoswiadczeniePomiarIndexViewModel { Doswiadczenie = doswiadczenieRecord, Pomiary = doswiadczenieRecord.Pomiary.ToList() }; return(View(viewModel)); }
public ActionResult O2(int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); if (!CanDraw(doswiadczenieRecord)) { Notifier.AddError("Brak możliwości rysowania wykresu - nie dodano żadnego pomiaru."); return(RedirectToAction("Index", "Doswiadczenie")); } var viewModel = new WykresViewModel { LabelY = "Stężenie tlenu [dm3]", Doswiadczenie = doswiadczenieRecord }; FillData(viewModel, PryzmaPomiarTyp.O2); return(View("Wykres", viewModel)); }
public ActionResult Index(FormCollection collection, int id) { var pryzmaRecord = pryzmaRepository.Get(id); if (pryzmaRecord.Doswiadczenie.Started) { Notifier.AddError("Doświadczenie zostało wystartowane. Brak możliwości modyfikacji składników pryzmy."); return(RedirectToAction("Index", new { id })); } var viewModel = new SkladnikiViewModel(pryzmaRecord); TryUpdateModel(viewModel); ExtraValidation(pryzmaRecord, viewModel); if (ModelState.IsValid) { var skladnikRecords = skladnikRepository.QueryByPryzma(id).ToList(); foreach (var skladnikRecord in skladnikRecords) { skladnikRepository.Remove(skladnikRecord); } if (viewModel.Skladniki != null) { foreach (var skladnikViewModel in viewModel.Skladniki) { skladnikViewModel.Record.Pryzma = pryzmaRecord; skladnikRepository.Add(skladnikViewModel.Record); } } return(RedirectToAction("Index", "Pryzma", new { id = pryzmaRecord.Doswiadczenie.Id })); } viewModel.Pryzma = pryzmaRecord; return(View(viewModel)); }
public ActionResult Start(int id) { var doswiadczenieRecord = doswiadczenieRepository.Get(id); if (!doswiadczenieRecord.Pryzmy.Any() || doswiadczenieRecord.Pryzmy.ToList().Any(p => !p.Skladniki.Any())) { Notifier.AddError("Nie można wystartować doświadczenia. Brak pryzm lub nie wszystkie pryzmy mają wypełnione składniki."); return(RedirectToAction("Index")); } DoswiadczenieStartViewModel viewModel; if (doswiadczenieRecord.Pryzmy.ToList().Any(p => pryzmaStartRepository.GetByPryzma(p.Id) != null)) { viewModel = new DoswiadczenieStartViewModel(doswiadczenieRecord) { Pryzmy = doswiadczenieRecord.Pryzmy.ToList() .Select(p => new PryzmaStartViewModel(pryzmaStartRepository.GetByPryzma(p.Id))) .ToList() }; } else { viewModel = new DoswiadczenieStartViewModel(doswiadczenieRecord) { Pryzmy = doswiadczenieRecord.Pryzmy.Select(p => new PryzmaStartViewModel(p)) }; } if (doswiadczenieRecord.DataStart == null) { doswiadczenieRecord.DataStart = DateTime.Now > doswiadczenieRecord.Data ? DateTime.Now : doswiadczenieRecord.Data; UnitOfWork.Rollback(); } return(View(viewModel)); }
public ActionResult Create(int id) { var pryzmaCount = pryzmaRepository.QueryByDoswiadczenieId(id).Count(); var doswiadczenie = doswiadczenieRepository.Get(id); if (doswiadczenie.Started) { Notifier.AddError("Doświadczenie zostało wystartowane. Brak możliwości dodawania pryzm."); return(RedirectToAction("Index", new { id })); } if (pryzmaCount >= 8) { Notifier.AddError(string.Format("Doświadczenie może mieć maksymalnie 8 pryzm. Doświadczenie {0} posiada już 8 pryzm.", doswiadczenie.Nazwa)); return(RedirectToAction("Index", new { id })); } var viewModel = new PryzmaViewModel { DoswiadczenieId = id }; return(View(viewModel)); }