public virtual JsonResult Summary(string operationNumber)
        {
            var jsonDataRequest = PageSerializationHelper.DeserializeJsonForm(Request.Form[0]);

            var viewModelOld =
                PageSerializationHelper.DeserializeObject <DemViewModel>(jsonDataRequest.SerializedData);

            var viewModel = new DemViewModel();

            if (viewModelOld != null)
            {
                if (viewModelOld.Required)
                {
                    viewModel.Resumen.EvaluabilityAssessmentNote = viewModelOld.Resumen.EvaluabilityAssessmentNote;
                    viewModel.Summary.EvaluabilityAssessmentNote = viewModelOld.Summary.EvaluabilityAssessmentNote;
                    viewModel.Required                = viewModelOld.Required;
                    viewModel.Justification           = viewModelOld.Justification;
                    viewModel.Summary.ShowDEMRequired = viewModelOld.Summary.ShowDEMRequired;
                    viewModel.DemOperationId          = viewModelOld.DemOperationId;
                }
                else
                {
                    viewModel.Summary.ShowDEMRequired            = viewModelOld.Summary.ShowDEMRequired;
                    viewModel.Justification                      = viewModelOld.Justification;
                    viewModel.Resumen.EvaluabilityAssessmentNote = viewModelOld.Resumen.EvaluabilityAssessmentNote;
                    viewModel.Summary.EvaluabilityAssessmentNote = viewModelOld.Summary.EvaluabilityAssessmentNote;
                }
            }

            viewModel.OperationNumber = operationNumber;
            viewModel.UpdateDemViewModel(jsonDataRequest.ClientFieldData);

            var response = _demService.SaveDem(viewModel.DemOperationId, viewModel);

            ViewBag.SerializedViewModel = PageSerializationHelper.SerializeObject(viewModel);

            return(Json(new JsonResult
            {
                Data = new
                {
                    partialSummary = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PSummaryDualVersion.cshtml",
                        response.SummaryModel),
                    partialResumen = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PSummaryDualVersion.cshtml",
                        response.ResumenModel),
                    IsValid = response.IsValid,
                    ErrorMessage = response.ErrorMessage
                }
            }));
        }
        public static void UpdateDemViewModel(
            this DemViewModel viewModel, ClientFieldData[] clientFieldData)
        {
            var noteFieldData = clientFieldData.First(x =>
                                                      !string.IsNullOrWhiteSpace(x.Name) &&
                                                      x.Name.Contains("EvaluabilityAssessmentNote"));

            var evaluabilityAssessmentNote = clientFieldData.First(x =>
                                                                   !string.IsNullOrWhiteSpace(x.Name) &&
                                                                   x.Name.Contains("EvaluabilityAssessmentNote"))
                                             .Value;

            if (noteFieldData.Name.Contains("-" + Language.EN))
            {
                if (viewModel.Summary.ShowDEMRequired)
                {
                    var isRequired = clientFieldData.First(x =>
                                                           !string.IsNullOrWhiteSpace(x.Name) &&
                                                           x.Name.Equals("txtRequiredDEM"))
                                     .Value;

                    var required = isRequired == "False" ?
                                   clientFieldData.First(x =>
                                                         !string.IsNullOrWhiteSpace(x.Name) &&
                                                         x.Name.Equals("textRequired")).Value :
                                   string.Empty;

                    viewModel.Justification = required;
                    viewModel.Required      = isRequired != "False";
                }

                viewModel.Summary.EvaluabilityAssessmentNote =
                    !string.IsNullOrEmpty(evaluabilityAssessmentNote) ?
                    evaluabilityAssessmentNote : string.Empty;
            }
            else
            {
                viewModel.Resumen.EvaluabilityAssessmentNote =
                    !string.IsNullOrEmpty(evaluabilityAssessmentNote) ?
                    evaluabilityAssessmentNote :
                    string.Empty;
            }
        }
        public virtual ActionResult CountryDevelopmentResults(string operationNumber)
        {
            var jsonDataRequest = PageSerializationHelper.DeserializeJsonForm(Request.Form[0]);

            var viewModel = PageSerializationHelper
                            .DeserializeObject <AlignmentContributionDemViewModel>(jsonDataRequest.SerializedData);

            viewModel = viewModel.UpdateCountryViewModel(jsonDataRequest.ClientFieldData);

            var response = _demService.SaveCountryDevelopmentResults(operationNumber, viewModel);

            if (response.IsValid)
            {
                _cacheData.Remove(_impactsIndicatorCacheName, System.Web.Caching.CacheItemRemovedReason.DependencyChanged);
                _cacheData.Remove(_outputsPhysicalCacheName, System.Web.Caching.CacheItemRemovedReason.DependencyChanged);
                _cacheData.Remove(_outputsFinancialCacheName, System.Web.Caching.CacheItemRemovedReason.DependencyChanged);
                _cacheData.Remove(_outcomesCacheName, System.Web.Caching.CacheItemRemovedReason.DependencyChanged);
            }

            var viewModelDem = new DemViewModel()
            {
                Stage = viewModel.InformationDem.Stage != null?
                        viewModel.InformationDem.Stage.ToUpper() :
                            string.Empty,
                            CurrentUser        = viewModel.InformationDem.UserName,
                            LastUpdate         = Convert.ToDateTime(viewModel.InformationDem.Date),
                            DemChecklistStatus = viewModel.InformationDem.CheckListVersion
            };

            if (response.IsValid)
            {
                var isWriteDemAfterFinalVersion = _demService.IsFinalVersionCompletedDem(operationNumber) &&
                                                  !_demService.IsCompletedAppr(operationNumber);

                var demChecklistStatusCodeInVps = _demService.GetPreviousDemChecklistStatusCode(operationNumber);

                if (isWriteDemAfterFinalVersion)
                {
                    var operationId = _demBusinessService.GetOperationId(operationNumber);

                    var rspnseCompleted = _demBusinessService.DraftVersionToCompletedVersion(
                        operationNumber,
                        operationId,
                        demChecklistStatusCodeInVps);

                    var responseSetCompleted = _demBusinessService.SetCompletedVersionDem(
                        operationNumber,
                        DemGlobalValues.LAST_VERSION_COMPLETED);

                    if (rspnseCompleted.IsValid)
                    {
                        viewModelDem.DemChecklistStatus =
                            _demService.GetPreviousDemChecklistStatus(_demService.GetDemOpereationIdCompleted(operationNumber));
                    }

                    response.IsValid      = rspnseCompleted.IsValid;
                    response.ErrorMessage = rspnseCompleted.ErrorMessage;
                }

                if (response.IsValid)
                {
                    var validationProcessStatus = _demService.GetValidationProcessStatus(
                        operationNumber, IDBContext.Current.CurrentLanguage);

                    if (validationProcessStatus.DEMValidationProcessStatusList != null)
                    {
                        viewModelDem.ValidationProcessStatus = validationProcessStatus.DEMValidationProcessStatusList;
                    }

                    viewModelDem.CanDownloadSpecialist  = _demService.DownloadSPDQRRSpecialist(operationNumber);
                    viewModelDem.CanDownloadCoordinator = _demService.DownloadSPDQRRCoordinator(operationNumber);
                    viewModelDem.CanDownloadChecklist   = _demService.CanDownloadChecklist(
                        operationNumber,
                        demChecklistStatusCodeInVps,
                        viewModel.InformationDem.Role);
                    viewModelDem.OfflineIsEnabled = _demService.GetOfflineFunctionalityStatus(
                        operationNumber).OfflineFunctionalityIsEnabled;
                    viewModelDem.CurrentRole = viewModel.InformationDem.Role;
                }
            }

            return(Json(new JsonResult
            {
                Data = new
                {
                    partialHeader = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/PHeaderInfo.cshtml",
                        viewModelDem),
                    partialValidation = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PValidationProcessStatus.cshtml",
                        viewModelDem),
                    IsValid = response.IsValid,
                    ErrorMessage = response.ErrorMessage
                }
            }));
        }
        public virtual JsonResult EvaluabilitySave(string operationNumber)
        {
            var jsonDataRequest = PageSerializationHelper.DeserializeJsonForm(Request.Form[0]);

            var viewModel = new DemViewModel();

            var viewModelOld =
                PageSerializationHelper.DeserializeObject <DemViewModel>(jsonDataRequest.SerializedData);

            if (viewModelOld != null)
            {
                viewModel.Evaluability.CurrentStage            = viewModelOld.Stage;
                viewModel.Evaluability.CurrentCheckListVersion = viewModelOld.DemChecklistStatus;
                viewModel.Evaluability.DemOperationId          = viewModelOld.DemOperationId;

                viewModel.Resumen.EvaluabilityAssessmentNote =
                    viewModelOld.Resumen.EvaluabilityAssessmentNote;
                viewModel.Summary.EvaluabilityAssessmentNote =
                    viewModelOld.Summary.EvaluabilityAssessmentNote;
                viewModel.Required                = viewModelOld.Required;
                viewModel.Justification           = viewModelOld.Justification;
                viewModel.Summary.ShowDEMRequired = viewModelOld.Summary.ShowDEMRequired;
                viewModel.DemOperationId          = viewModelOld.DemOperationId;
            }

            viewModel.Evaluability.UpdateEvaluabilityViewModel(jsonDataRequest.ClientFieldData);

            var response = _demService.SaveEvaluability(
                viewModel.Evaluability.DemOperationId, viewModel.Evaluability);

            ViewBag.SerializedViewModel = PageSerializationHelper.SerializeObject(viewModel);

            if (response.IsValid && viewModelOld != null)
            {
                response.DemViewModel.CanDownloadSpecialist  = viewModelOld.CanDownloadSpecialist;
                response.DemViewModel.CanDownloadCoordinator = viewModelOld.CanDownloadCoordinator;
                response.DemViewModel.CanDownloadChecklist   = viewModelOld.CanDownloadChecklist;
                response.DemViewModel.OfflineIsEnabled       = viewModelOld.OfflineIsEnabled;
                response.DemViewModel.CurrentRole            = viewModelOld.CurrentRole;

                if (viewModelOld.IsWriteDemAferFinalVersion)
                {
                    var operationId = _demBusinessService.GetOperationId(operationNumber);
                    var demChecklistStatusCodeInVps = _demService.GetPreviousDemChecklistStatusCode(operationNumber);

                    var rspnseCompleted = _demBusinessService.DraftVersionToCompletedVersion(
                        operationNumber,
                        operationId,
                        demChecklistStatusCodeInVps);

                    var responseSetCompleted = _demBusinessService.SetCompletedVersionDem(
                        operationNumber,
                        DemGlobalValues.LAST_VERSION_COMPLETED);

                    if (rspnseCompleted.IsValid)
                    {
                        response.DemViewModel.DemChecklistStatus =
                            _demService.GetPreviousDemChecklistStatus(_demService.GetDemOpereationIdCompleted(operationNumber));

                        var validationProcessStatus = _demService.GetValidationProcessStatus(
                            operationNumber, IDBContext.Current.CurrentLanguage);

                        if (validationProcessStatus.DEMValidationProcessStatusList != null)
                        {
                            response.DemViewModel.ValidationProcessStatus = validationProcessStatus.DEMValidationProcessStatusList;
                        }
                    }

                    response.IsValid      = rspnseCompleted.IsValid;
                    response.ErrorMessage = rspnseCompleted.ErrorMessage;
                }
                else
                {
                    response.DemViewModel.DemChecklistStatus = viewModelOld.DemChecklistStatus;
                    var validationProcessStatus = _demService.GetValidationProcessStatus(
                        operationNumber, IDBContext.Current.CurrentLanguage);

                    if (validationProcessStatus.DEMValidationProcessStatusList != null)
                    {
                        response.DemViewModel.ValidationProcessStatus = validationProcessStatus.DEMValidationProcessStatusList;
                    }
                }
            }

            return(Json(new JsonResult
            {
                Data = new
                {
                    partial = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PEvaluability.cshtml",
                        response.EvaluavilityModel),
                    partialSummary = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PSummaryDualVersion.cshtml",
                        response.SummaryModel),
                    partialResumen = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PSummaryDualVersion.cshtml",
                        response.ResumenModel),
                    partialHeader = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/PHeaderInfo.cshtml",
                        response.DemViewModel),
                    partialValidation = this.RenderRazorViewToString(
                        "~/Areas/DEM/Views/View/Partials/Tabs/PValidationProcessStatus.cshtml",
                        response.DemViewModel),
                    IsValid = response.IsValid,
                    ErrorMessage = response.ErrorMessage
                }
            }));
        }