Example #1
0
        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);
        }
Example #2
0
        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 }));
        }
Example #3
0
        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 }));
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #8
0
        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));
        }
Example #9
0
        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));
        }
Example #10
0
        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));
        }
Example #11
0
        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));
        }
Example #12
0
        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));
        }