示例#1
0
        public IActionResult AddEditVictim(AccidentVictimViewModel accidentVictimViewModel)
        {
            accidentVictimViewModel.CitizenList    = lifeService.GetSelectListOfCitizensFromDb();
            accidentVictimViewModel.BodilyHarmList = lifeService.GetSelectListFromEnum <BodilyHarmEnum>();

            // CitizenId is not valid
            if (ModelState[nameof(accidentVictimViewModel.CitizenId)].ValidationState == ModelValidationState.Invalid)
            {
                // remove all ModelStateEntries with key name different from "CitizenId" ->
                // we demonstrate only CitizenId error here
                ModelState.Keys.Where(key => key != nameof(accidentVictimViewModel.CitizenId)).
                ToList().Select(key => ModelState.Remove(key)).ToList();
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }

            // EconomicLoss numeric format is not valid (though the user attempted to enter something)
            if (!ModelState.IsValid && ModelState[nameof(accidentVictimViewModel.EconomicLoss)].AttemptedValue != String.Empty)
            {
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }

            // validation for combination of properties
            if ((accidentVictimViewModel.EconomicLoss == null || accidentVictimViewModel.EconomicLoss == 0) &&
                (accidentVictimViewModel.BodilyHarm == BodilyHarmEnum.None ||
                 accidentVictimViewModel.BodilyHarm == BodilyHarmEnum.NotAvailable))
            {
                ModelState.Clear();
                ModelState.AddModelError(String.Empty, "Чтобы человек считался потерпевшим, у него должны быть телесные повреждения или экономический ущерб");;
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }


            var accidentVictim = mapper.Map <AccidentVictim>(accidentVictimViewModel);
            var citizenUser    = citizenUserRepository.Get((long)accidentVictimViewModel.CitizenId);

            accidentVictim.Victim = citizenUser;
            var accident = accidentRepository.Get(accidentVictimViewModel.AccidentId);

            accidentVictim.Accident = accident;

            victimRepository.Save(accidentVictim);
            return(RedirectToAction(nameof(EditFire), new { id = accidentVictimViewModel.AccidentId }));
        }
示例#2
0
        /// <summary>
        /// Prepares Accident Details View Model for Accident Details, EditFire and Edit Criminal Offence view
        /// </summary>
        /// <param name="id">Accident Id</param>
        /// <returns>Accident Details View Model instance</returns>
        public AccidentDetailsViewModel GetAccidentDetailsViewModel(long id)
        {
            var accidentFromDb           = accidentRepository.Get(id);
            var accidentDetailsViewModel = mapper.Map <AccidentDetailsViewModel>(accidentFromDb);

            // victims list
            // no items in the list = there were no victims (not "no info available")
            var victimsFromDb            = accidentFromDb.AccidentVictims;
            var accidentVictimsViewModel = new List <AccidentVictimViewModel>();

            if (victimsFromDb.Count != 0)
            {
                foreach (var victim in victimsFromDb)
                {
                    accidentVictimsViewModel.Add(mapper.Map <AccidentVictimViewModel>(victim));
                }
            }
            accidentDetailsViewModel.AccidentVictimsViewModel = accidentVictimsViewModel;

            // address
            var accidentAddressFromDb = accidentFromDb.AccidentAddress;
            var addressViewModel      = mapper.Map <AdressViewModel>(accidentAddressFromDb);

            accidentDetailsViewModel.AccidentAddressViewModel = addressViewModel;

            accidentDetailsViewModel.AccidentAddressText = addressViewModel == null ? Dictionaries.NotAvailable : $"г.{addressViewModel.City}, ул.{addressViewModel.Street}, {addressViewModel.HouseNumber}";

            // Fire details
            var fireDetailFromDb    = accidentFromDb.FireDetail;
            var fireDetailViewModel = mapper.Map <FireDetailViewModel>(fireDetailFromDb);

            if (fireDetailViewModel == null)
            {
                fireDetailViewModel = new FireDetailViewModel()
                {
                    AccidentId    = accidentFromDb.Id,
                    FireCause     = FireCauseEnum.NotAvailable,
                    FireCauseText = Dictionaries.GetText <FireCauseEnum>(FireCauseEnum.NotAvailable),
                    FireClass     = FireClassEnum.NotAvailable,
                    FireClassText = Dictionaries.GetText <FireClassEnum>(FireClassEnum.NotAvailable),
                };
            }
            accidentDetailsViewModel.FireDetailViewModel = fireDetailViewModel;

            // Houses Destroyed in fire list
            // no items in the list = there were no destroyed houes (not "no info available")
            var housesDestroyedInFireFromDb    = accidentFromDb.HousesDestroyedInFire;
            var housesDestroyedInFireViewModel = new List <HouseDestroyedInFireViewModel>();

            if (housesDestroyedInFireFromDb.Count != 0)
            {
                foreach (var house in housesDestroyedInFireFromDb)
                {
                    housesDestroyedInFireViewModel.Add(mapper.Map <HouseDestroyedInFireViewModel>(house));
                }
            }
            accidentDetailsViewModel.HousesDestroyedInFireViewModel = housesDestroyedInFireViewModel;

            // Criminal Offence
            // Criminal offence articles
            var criminalArticlesFromDb           = accidentFromDb.CriminalOffenceArticles;
            var criminalOffenceArticlesViewModel = new List <CriminalOffenceArticleViewModel>();

            if (criminalArticlesFromDb.Count != 0)
            {
                foreach (var article in criminalArticlesFromDb)
                {
                    var articleViewModel = mapper.Map <CriminalOffenceArticleViewModel>(article);
                    criminalOffenceArticlesViewModel.Add(articleViewModel);
                }
            }
            accidentDetailsViewModel.CriminalOffenceArticlesViewModel = criminalOffenceArticlesViewModel;

            // Criminal offenders
            var offendersFromDb            = accidentFromDb.CriminalOffenders;
            var accidentOffendersViewModel = new List <CriminalOffenderViewModel>();

            if (offendersFromDb.Count != 0)
            {
                foreach (var offender in offendersFromDb)
                {
                    accidentOffendersViewModel.Add(mapper.Map <CriminalOffenderViewModel>(offender));
                }
            }
            accidentDetailsViewModel.CriminalOffendersViewModel = accidentOffendersViewModel;

            return(accidentDetailsViewModel);
        }