コード例 #1
0
        public ActionResult Start(FormCollection collection, int id)
        {
            var doswiadczenieRecord = doswiadczenieRepository.Get(id);

            var viewModel = new DoswiadczenieStartViewModel(doswiadczenieRecord);

            TryUpdateModel(viewModel);

            if (ModelState.IsValid)
            {
                // ReSharper disable once PossibleInvalidOperationException
                if (viewModel.DataStart.Value < viewModel.Doswiadczenie.Data)
                {
                    ModelState.AddModelError("DataStart", string.Format("Data startowa doświadczenia nie może być mniejsza niż data założenia doświadczenia, tj. {0}", viewModel.Doswiadczenie.Data.ToString("yyyy-MM-dd")));
                }
            }

            if (ModelState.IsValid && !doswiadczenieRecord.Started)
            {
                foreach (var pryzmaStart in viewModel.Pryzmy)
                {
                    var pryzma = pryzmaRepository.Get(pryzmaStart.PryzmaId);
                    pryzmaStart.Record.Pryzma = pryzma;
                    pryzmaStartRepository.Add(pryzmaStart.Record);
                }

                doswiadczenieRecord.Started = true;

                return(RedirectToAction("Index"));
            }

            if (doswiadczenieRecord.Started)
            {
                Notifier.AddError("Nie można wystartować już wystartowanego doświadczenia.");
            }

            foreach (var pryzmaStart in viewModel.Pryzmy)
            {
                pryzmaStart.SetPryzma(pryzmaRepository.Get(pryzmaStart.PryzmaId));
            }
            viewModel.Doswiadczenie = doswiadczenieRecord;

            UnitOfWork.Rollback();

            return(View(viewModel));
        }
コード例 #2
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));
        }