public PartialViewResult EditCostAuthorityObligationRequests(ObligationRequestPrimaryKey reclamationObligationRequestPrimaryKey)
        {
            var reclamationObligationRequest = reclamationObligationRequestPrimaryKey.EntityObject;
            var viewModel = new EditCostAuthorityObligationRequestsViewModel(reclamationObligationRequest);
            var firmaPage = FirmaPageTypeEnum.AddCostAuthorityToObligationRequest.GetFirmaPage();

            return(ViewEditCostAuthorityObligationRequests(reclamationObligationRequest, viewModel, firmaPage));
        }
        public ActionResult EditCostAuthorityObligationRequests(ObligationRequestPrimaryKey reclamationObligationRequestPrimaryKey, EditCostAuthorityObligationRequestsViewModel viewModel)
        {
            var reclamationObligationRequest = reclamationObligationRequestPrimaryKey.EntityObject;

            if (!ModelState.IsValid)
            {
                var firmaPage = FirmaPageTypeEnum.AddCostAuthorityToObligationRequest.GetFirmaPage();
                return(ViewEditCostAuthorityObligationRequests(reclamationObligationRequest, viewModel, firmaPage));
            }

            var listOfCostAuthorityIDs = viewModel.CostAuthorityJsonList.Select(x => x.CostAuthorityID).ToList();
            var existingCostAuthorityObligationRequests = reclamationObligationRequest.CostAuthorityObligationRequests;

            foreach (var costAuthorityID in listOfCostAuthorityIDs)
            {
                var costAuthorityJson =
                    viewModel.CostAuthorityJsonList.Single(x => x.CostAuthorityID == costAuthorityID);
                if (!existingCostAuthorityObligationRequests.Select(x => x.CostAuthorityID).Contains(costAuthorityID))
                {
                    var newCostAuthorityReclamationAgreement =
                        new CostAuthorityObligationRequest(costAuthorityID, reclamationObligationRequest.ObligationRequestID)
                    {
                        ProjectedObligation = costAuthorityJson.ProjectedObligation
                        , CostAuthorityObligationRequestNote = costAuthorityJson.Note
                        , TechnicalRepresentativePersonID    = costAuthorityJson.TechnicalRepresentativePersonID
                        , RecipientOrganizationID            = costAuthorityJson.RecipientOrganizationID
                        , BudgetObjectCodeID = costAuthorityJson.BudgetObjectCodeID
                    };
                    reclamationObligationRequest.CostAuthorityObligationRequests.Add(newCostAuthorityReclamationAgreement);
                }
            }
            HttpRequestStorage.DatabaseEntities.SaveChanges();
            ExcelUploadController.DoObligationRequestMatching(obReqLogger);
            return(new ModalDialogFormJsonResult());
        }
        private PartialViewResult ViewEditCostAuthorityObligationRequests(ObligationRequest obligationRequest, EditCostAuthorityObligationRequestsViewModel viewModel, FirmaPage firmaPage)
        {
            var allCostAuthorities   = HttpRequestStorage.DatabaseEntities.CostAuthorities.ToList();
            var allOrganizations     = HttpRequestStorage.DatabaseEntities.Organizations.ToList();
            var allPeople            = HttpRequestStorage.DatabaseEntities.People.ToList();
            var allBudgetObjectCodes = HttpRequestStorage.DatabaseEntities.BudgetObjectCodes.ToList();
            var viewData             = new EditCostAuthorityObligationRequestsViewData(firmaPage, CurrentFirmaSession, allCostAuthorities, obligationRequest, allOrganizations, allPeople, allBudgetObjectCodes);

            return(RazorPartialView <EditCostAuthorityObligationRequests, EditCostAuthorityObligationRequestsViewData, EditCostAuthorityObligationRequestsViewModel>(viewData, viewModel));
        }