Exemple #1
0
        public async Task <ActionResult> ProcessAmalgamationAsync(AmalgamateEstablishmentsModel model)
        {
            if (model.MergeDate.IsEmpty() || model.MergeDate == null || !model.MergeDate.IsValid())
            {
                ViewData.ModelState.AddModelError("MergeDate", "Please enter a valid establishment open date");
            }

            if (string.IsNullOrEmpty(model.NewEstablishmentName))
            {
                ViewData.ModelState.AddModelError("NewEstablishmentName", "Please enter the establishment name");
            }

            if (string.IsNullOrEmpty(model.EstablishmentType))
            {
                ViewData.ModelState.AddModelError("EstablishmentType", "Please select the establishment type");
            }

            if (string.IsNullOrEmpty(model.EstablishmentPhase.GetValueOrDefault().ToString()))
            {
                ViewData.ModelState.AddModelError("EstablishmentPhase", "Please select the establishment phase");
            }

            if (string.IsNullOrEmpty(model.LocalAuthorityId))
            {
                ViewData.ModelState.AddModelError("LocalAuthorityId", "Please select a local authority");
            }

            model.EstablishmentPhases = (await _lookupService.EducationPhasesGetAllAsync()).ToSelectList();

            model.EstablishmentTypes = (await _lookupService.EstablishmentTypesGetAllAsync()).ToSelectList();

            model.LocalAuthorities = (await _lookupService.LocalAuthorityGetAllAsync()).ToSelectList();

            if (!ModelState.IsValid)
            {
                return(View("~/Views/Tools/Mergers/ConfirmAmalgamation.cshtml", model));
            }

            var urns = new List <int>();

            urns.Add(model.Establishment0Urn.GetValueOrDefault());

            urns.Add(model.Establishment1Urn.GetValueOrDefault());


            if (model.Establishment2Urn.HasValue)
            {
                urns.Add(model.Establishment2Urn.GetValueOrDefault());
            }

            if (model.Establishment3Urn.HasValue)
            {
                urns.Add(model.Establishment3Urn.GetValueOrDefault());
            }

            var mergeDate = new DateTime(model.MergeDate.Year.GetValueOrDefault(),
                                         model.MergeDate.Month.GetValueOrDefault(), model.MergeDate.Day.GetValueOrDefault());


            var establishmentTypeId = int.TryParse(model.EstablishmentType, out var i) ? i : (int?)null;
            var localAuthorityId    = int.TryParse(model.LocalAuthorityId, out var j) ? j : (int?)null;



            var result = await _establishmentWriteService.AmalgamateOrMergeAsync(
                new AmalgamateMergeRequest()
            {
                OperationType                    = AmalgamateMergeRequest.eOperationType.Amalgamate,
                OperationTypeDescriptor          = "amalgamate",
                MergeOrAmalgamationDate          = mergeDate,
                UrnsToMerge                      = urns.ToArray(),
                NewEstablishmentPhaseId          = model.EstablishmentPhase,
                NewEstablishmentTypeId           = establishmentTypeId,
                NewEstablishmentName             = model.NewEstablishmentName,
                NewEstablishmentLocalAuthorityId = localAuthorityId,
            }, User);

            if (!result.HasErrors)
            {
                model.NewEstablishmentUrn = result.Response.AmalgamateNewEstablishmentUrn.GetValueOrDefault();
                model.LocalAuthorityName  =
                    model.LocalAuthorities.FirstOrDefault(x => x.Value == model.LocalAuthorityId)?.Text;

                model.EstablishmentType = model.EstablishmentTypes
                                          .FirstOrDefault(x => x.Value == model.EstablishmentType)?.Text;

                return(View("~/Views/Tools/Mergers/AmalgamationComplete.cshtml", model));
            }



            foreach (var err in result.Errors)
            {
                if (err.Fields != null)
                {
                    ViewData.ModelState.AddModelError(err.Fields, err.Message);
                }
            }

            return(View("~/Views/Tools/Mergers/ConfirmAmalgamation.cshtml", model));
        }
Exemple #2
0
        public async Task <ActionResult> ProcessAmalgamationEstablishmentsAsync(AmalgamateEstablishmentsModel model)
        {
            var viewModel = new AmalgamateEstablishmentsModel();

            var submittedUrns   = new List <int>();
            var estab0HasErrors = ModelState.Keys.Where(k => k == "Establishment0Urn")
                                  .Select(k => ModelState[k].Errors).First().Select(e => e.ErrorMessage).Any();

            var estab1HasErrors = ModelState.Keys.Where(k => k == "Establishment1Urn")
                                  .Select(k => ModelState[k].Errors).First().Select(e => e.ErrorMessage).Any();

            if (!model.Establishment0Urn.HasValue && !estab0HasErrors)
            {
                ModelState.AddModelError(nameof(model.Establishment0Urn), "Enter the establishment 1 URN");
            }

            if (!model.Establishment1Urn.HasValue && !model.Establishment2Urn.HasValue &&
                !model.Establishment3Urn.HasValue)
            {
                if (!estab1HasErrors)
                {
                    ModelState.AddModelError(nameof(model.Establishment1Urn), "Enter the establishment 2 URN");
                }
            }

            if (model.Establishment0Urn.HasValue)
            {
                var estab =
                    await _establishmentReadService.GetAsync(model.Establishment0Urn.GetValueOrDefault(), User);

                if (estab.GetResult() == null && !estab1HasErrors)
                {
                    ViewData.ModelState.AddModelError(nameof(model.Establishment0Urn),
                                                      "The establishment 1 URN is invalid");
                }
                else
                {
                    viewModel.Establishment0Urn  = model.Establishment0Urn;
                    viewModel.Establishment0Name = estab.GetResult().Name;

                    submittedUrns.Add(model.Establishment0Urn.GetValueOrDefault());
                }
            }

            if (model.Establishment1Urn.HasValue)
            {
                var estab1 =
                    await _establishmentReadService.GetAsync(model.Establishment1Urn.GetValueOrDefault(), User);

                if (estab1.GetResult() == null)
                {
                    ViewData.ModelState.AddModelError(nameof(model.Establishment1Urn),
                                                      "The establishment 1 URN is invalid");
                }
                else
                {
                    viewModel.Establishment1Urn  = model.Establishment1Urn;
                    viewModel.Establishment1Name = estab1.GetResult().Name;

                    submittedUrns.Add(model.Establishment1Urn.GetValueOrDefault());
                }
            }

            if (model.Establishment2Urn.HasValue)
            {
                var estab2 =
                    await _establishmentReadService.GetAsync(model.Establishment2Urn.GetValueOrDefault(), User);

                if (estab2.GetResult() == null)
                {
                    ViewData.ModelState.AddModelError(nameof(model.Establishment2Urn),
                                                      "The establishment 2 URN is invalid");
                }
                else
                {
                    viewModel.Establishment2Urn  = model.Establishment2Urn;
                    viewModel.Establishment2Name = estab2.GetResult().Name;

                    submittedUrns.Add(model.Establishment2Urn.GetValueOrDefault());
                }
            }

            if (model.Establishment3Urn.HasValue)
            {
                var estab3 =
                    await _establishmentReadService.GetAsync(model.Establishment3Urn.GetValueOrDefault(), User);

                if (estab3.GetResult() == null)
                {
                    ViewData.ModelState.AddModelError(nameof(model.Establishment3Urn),
                                                      "The establishment 3 URN is invalid");
                }
                else
                {
                    viewModel.Establishment3Urn  = model.Establishment3Urn;
                    viewModel.Establishment3Name = estab3.GetResult().Name;

                    submittedUrns.Add(model.Establishment3Urn.GetValueOrDefault());
                }
            }

            var duplicates = submittedUrns.GroupBy(x => x)
                             .Where(g => g.Count() > 1)
                             .ToDictionary(x => x.Key, x => x.Count());


            if (duplicates.ContainsKey(model.Establishment0Urn.GetValueOrDefault()))
            {
                ViewData.ModelState.AddModelError("Establishment0Urn", "Duplicate URN. Please correct the URN.");
            }

            if (duplicates.ContainsKey(model.Establishment1Urn.GetValueOrDefault()))
            {
                ViewData.ModelState.AddModelError("Establishment1Urn", "Duplicate URN. Please correct the URN.");
            }

            if (duplicates.ContainsKey(model.Establishment2Urn.GetValueOrDefault()))
            {
                ViewData.ModelState.AddModelError("Establishment2Urn", "Duplicate URN. Please correct the URN.");
            }

            if (duplicates.ContainsKey(model.Establishment3Urn.GetValueOrDefault()))
            {
                ViewData.ModelState.AddModelError("Establishment3Urn", "Duplicate URN. Please correct the URN.");
            }


            if (!ModelState.IsValid)
            {
                return(View("~/Views/Tools/Mergers/AmalgamateEstablishments.cshtml", model));
            }

            viewModel.EstablishmentPhases = (await _lookupService.EducationPhasesGetAllAsync()).ToSelectList();

            viewModel.EstablishmentTypes = (await _lookupService.EstablishmentTypesGetAllAsync()).ToSelectList();

            viewModel.LocalAuthorities = (await _lookupService.LocalAuthorityGetAllAsync()).ToSelectList();

            return(View("~/Views/Tools/Mergers/ConfirmAmalgamation.cshtml", viewModel));
        }