public EditCostAuthorityObligationRequestsViewModel(ProjectFirmaModels.Models.ObligationRequest obligationRequest) { HasCostAuthorityJsonListWithoutFakeRow = false; CostAuthorityJsonList = new List <CostAuthorityJson> { new CostAuthorityJson() }; }
public ObligationRequestDetailViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.ObligationRequest obligationRequest, bool userCanInteractWithSubmissionNotes, EntityNotesViewData obligationRequestNotesViewData) : base(currentFirmaSession) { PageTitle = $"Obligation Request: {obligationRequest.GetObligationRequestNumber()}"; EntityName = "Obligation Request Detail"; ObligationRequest = obligationRequest; IndexUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(c => c.ObligationRequestIndex()); EditObligationRequestBasicsUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(c => c.Edit(obligationRequest)); EditRequisitionInformationUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(c => c.EditRequisitionInformation(obligationRequest)); UserCanEditObligationRequest = new ObligationRequestCreateFeature().HasPermissionByFirmaSession(currentFirmaSession); UserCanEditRequisitionInformation = new ObligationRequestCreateFeature().HasPermissionByFirmaSession(currentFirmaSession); UserCanInteractWithSubmissionNotes = userCanInteractWithSubmissionNotes; ObligationRequestNotesViewData = obligationRequestNotesViewData; // Potential Matches PotentialMatches = obligationRequest.CostAuthorityObligationRequests .SelectMany(x => x.CostAuthorityObligationRequestPotentialObligationNumberMatches).ToList(); PotentialMatchesGridName = "potentialMatchesGrid"; PotentialMatchesGridSpec = new CostAuthorityObligationRequestPotentialObligationNumberMatchGridSpec(currentFirmaSession); PotentialMatchesGridDataUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(cac => cac.PotentialObligationRequestMatchesJsonData(obligationRequest)); ShowPotentialMatches = obligationRequest.ObligationNumber == null && obligationRequest.Agreement == null && PotentialMatches.Any(); var costAuthorityIDList = obligationRequest.Agreement != null ? obligationRequest.Agreement.AgreementCostAuthorities .Select(x => x.CostAuthorityID).ToList() : new List <int>(); // Match Status MatchStatus = GetMatchStatus(obligationRequest, PotentialMatches); // Unmatch Dialog string unmatchUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(x => x.ConfirmObligationRequestUnmatch(obligationRequest)); var extraCssClassesForAButton = new List <string>() { "btn", "btn-sm", "btn-firma" }; UnmatchObligationRequestButtonHtml = ModalDialogFormHelper.MakeConfirmDialogLink("Unmatch", unmatchUrl, "Unmatch Obligation Request", "Unmatch", extraCssClassesForAButton, true); CostAuthorityObligationRequestGridName = "costAuthorityObligationRequestGrid"; CostAuthorityObligationRequestGridSpec = new CostAuthorityObligationRequestGridSpec(CurrentFirmaSession, obligationRequest.ObligationRequestStatus == ObligationRequestStatus.Draft, costAuthorityIDList) { ObjectNameSingular = $"{FieldDefinitionEnum.CostAuthorityWorkBreakdownStructure.ToType().GetFieldDefinitionLabel()} associated with {FieldDefinitionEnum.ObligationRequest.ToType().GetFieldDefinitionLabel()} {obligationRequest.ObligationRequestID.ToString("D4")}", ObjectNamePlural = $"{FieldDefinitionEnum.CostAuthorityWorkBreakdownStructure.ToType().GetFieldDefinitionLabelPluralized()} associated with {FieldDefinitionEnum.ObligationRequest.ToType().GetFieldDefinitionLabel()} {obligationRequest.ObligationRequestID.ToString("D4")}", SaveFiltersInCookie = true }; CostAuthorityObligationRequestGridDataUrl = SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(cac => cac.CostAuthorityObligationRequestsJsonData(obligationRequest)); }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public ObligationRequestSubmissionNote(ObligationRequest obligationRequest, string note, DateTime createDate) : this() { // Mark this as a new object by setting primary key with special value this.ObligationRequestSubmissionNoteID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.ObligationRequestID = obligationRequest.ObligationRequestID; this.ObligationRequest = obligationRequest; obligationRequest.ObligationRequestSubmissionNotes.Add(this); this.Note = note; this.CreateDate = createDate; }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public CostAuthorityObligationRequest(CostAuthority costAuthority, ObligationRequest obligationRequest) : this() { // Mark this as a new object by setting primary key with special value this.CostAuthorityObligationRequestID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.CostAuthorityID = costAuthority.CostAuthorityID; this.CostAuthority = costAuthority; costAuthority.CostAuthorityObligationRequests.Add(this); this.ObligationRequestID = obligationRequest.ObligationRequestID; this.ObligationRequest = obligationRequest; obligationRequest.CostAuthorityObligationRequests.Add(this); }
public void UpdateModel(ProjectFirmaModels.Models.ObligationRequest obligationRequest, FirmaSession currentFirmaSession) { obligationRequest.AgreementID = AgreementID; obligationRequest.RequisitionNumber = RequisitionNumber; obligationRequest.RequisitionDate = RequisitionDate; obligationRequest.ContractSpecialist = ContractSpecialist; obligationRequest.AssignedDate = AssignedDate; obligationRequest.DateSentForDeptReview = DateSentForDeptReview; obligationRequest.DCApprovalDate = DCApprovalDate; obligationRequest.ActualAwardDate = ActualAwardDate; }
public EditRequisitionInformationViewModel(ProjectFirmaModels.Models.ObligationRequest obligationRequest) { AgreementID = obligationRequest.AgreementID; RequisitionNumber = obligationRequest.RequisitionNumber; RequisitionDate = obligationRequest.RequisitionDate; ContractSpecialist = obligationRequest.ContractSpecialist; AssignedDate = obligationRequest.AssignedDate; DateSentForDeptReview = obligationRequest.DateSentForDeptReview; DCApprovalDate = obligationRequest.DCApprovalDate; ActualAwardDate = obligationRequest.ActualAwardDate; }
public EditObligationRequestViewModel(ProjectFirmaModels.Models.ObligationRequest obligationRequest) { IsModification = obligationRequest.IsModification; AgreementID = obligationRequest.AgreementID; ContractTypeID = obligationRequest.ContractTypeID; ObligationRequestStatusID = obligationRequest.ObligationRequestStatusID; DescriptionOfNeed = obligationRequest.DescriptionOfNeed; ReclamationObligationRequestFundingPriorityID = obligationRequest.ReclamationObligationRequestFundingPriorityID; TargetAwardDate = obligationRequest.TargetAwardDate; Palt = obligationRequest.PALT; TargetSubmittalDate = obligationRequest.TargetSubmittalDate; }
public static HtmlString EditCostAuthorityObligationRequestsButton(this ProjectFirmaModels.Models.ObligationRequest obligationRequest) { var disabledState = obligationRequest.ObligationRequestStatus != ObligationRequestStatus.Draft ? ModalDialogFormHelper.DisabledState.Disabled : ModalDialogFormHelper.DisabledState.NotDisabled; var disabledHoverText = disabledState == ModalDialogFormHelper.DisabledState.Disabled ? "You cannot Add Obligation Item Budget Projections because this Obligation Request is not in a Draft state." : null; return(ModalDialogFormHelper.ModalDialogFormLink(MakeProjectNewObligationsText(), EditCostAuthorityObligationRequestsUrl(obligationRequest), $"Create new Obligation Item Budget Projections", 1100, "Save", "Cancel", new List <string> { "btn", "btn-firma" }, null, null, disabledState, disabledHoverText)); }
public EditCostAuthorityObligationRequestViewData( ProjectFirmaModels.Models.FirmaPage projectStatusFirmaPage , FirmaSession currentFirmaSession , ProjectFirmaModels.Models.ObligationRequest obligationRequest , List <ProjectFirmaModels.Models.Organization> allOrganizations , List <Person> allPeople , List <ProjectFirmaModels.Models.BudgetObjectCode> allBudgetObjectCodes ) : base(currentFirmaSession) { ProjectStatusFirmaPage = new ViewPageContentViewData(projectStatusFirmaPage, currentFirmaSession); ObligationRequest = obligationRequest; Organizations = allOrganizations.OrderBy(x => x.GetDisplayName()).ToSelectListWithEmptyFirstRow(x => x.OrganizationID.ToString(), x => x.GetDisplayName()); People = allPeople.OrderBy(x => x.GetFullNameFirstLast()).ToSelectListWithEmptyFirstRow(x => x.PersonID.ToString(), x => x.GetFullNameFirstLast()); BudgetObjectCodes = allBudgetObjectCodes.OrderBy(x => x.GetDisplayName()).ToSelectListWithEmptyFirstRow(x => x.BudgetObjectCodeID.ToString(), x => x.GetDisplayName()); }
public void UpdateModel(ProjectFirmaModels.Models.ObligationRequest obligationRequest, FirmaSession currentFirmaSession) { if (IsModification) { obligationRequest.AgreementID = AgreementID; } else { obligationRequest.AgreementID = null; } obligationRequest.IsModification = IsModification; obligationRequest.ContractTypeID = ContractTypeID; obligationRequest.ObligationRequestStatusID = ObligationRequestStatusID; obligationRequest.DescriptionOfNeed = DescriptionOfNeed; obligationRequest.ReclamationObligationRequestFundingPriorityID = ReclamationObligationRequestFundingPriorityID; obligationRequest.TargetAwardDate = TargetAwardDate; obligationRequest.PALT = Palt; obligationRequest.TargetSubmittalDate = TargetSubmittalDate; }
/// <summary> /// I'm trying to be thorough here about possibilities, but if this proves overcomplicated don't hesitate to do something different than this. /// -- SLG 7/30/2020 /// </summary> /// <param name="obligationRequest"></param> /// <param name="potentialMatches"></param> /// <returns></returns> private static ObligationRequestMatchStatus GetMatchStatus(ProjectFirmaModels.Models.ObligationRequest obligationRequest, List <CostAuthorityObligationRequestPotentialObligationNumberMatch> potentialMatches) { bool hasExistingMatch = obligationRequest.ObligationNumber != null; bool hasAnyPotentialMatches = potentialMatches.Any(); bool hasExactlyOnePotentialMatch = potentialMatches.Count == 1; bool hasSeveralPotentialMatches = potentialMatches.Count > 1; if (!hasExistingMatch && !hasAnyPotentialMatches) { return(ObligationRequestMatchStatus.UnmatchedNoMatchesAvailable); } if (!hasExistingMatch && hasAnyPotentialMatches) { return(ObligationRequestMatchStatus.UnmatchedMatchesAvailable); } if (hasExistingMatch && !hasAnyPotentialMatches) { // I believe MJ has seen this during testing, so we'll handle it. return(ObligationRequestMatchStatus.MatchedButNoCorrespondingPotentialMatches); } if (hasExistingMatch && hasExactlyOnePotentialMatch) { // Make sure that if there is only one match, and the ObligationRequest it already matched, // it is to this particular match. Check.Ensure(obligationRequest.ObligationNumberID == potentialMatches.Single().ObligationNumberID); return(ObligationRequestMatchStatus.MatchedToOnlyAvailableMatch); } if (hasExistingMatch && hasSeveralPotentialMatches) { return(ObligationRequestMatchStatus.MatchedToOneOfSeveralPotentialMatches); } throw new Exception($"Unhandled combination of match conditions. hasExistingMatch: {hasExistingMatch.ToString()} matchCount: {potentialMatches.Count}"); }
public EditCostAuthorityObligationRequestsViewData( ProjectFirmaModels.Models.FirmaPage editCostAuthorityObligationRequestsFirmaPage , FirmaSession currentFirmaSession , List <ProjectFirmaModels.Models.CostAuthority> allCostAuthorities , ProjectFirmaModels.Models.ObligationRequest obligationRequest , List <ProjectFirmaModels.Models.Organization> allOrganizations , List <Person> allPeople , List <ProjectFirmaModels.Models.BudgetObjectCode> allBudgetObjectCodes ) : base(currentFirmaSession, editCostAuthorityObligationRequestsFirmaPage) { var costAuthoritiesToOmit = obligationRequest.CostAuthorityObligationRequests.Select(x => x.CostAuthorityID); var reclamationCostAuthoritiesToUse = allCostAuthorities .Where(x => !costAuthoritiesToOmit.Contains(x.CostAuthorityID)).ToList(); CostAuthorities = reclamationCostAuthoritiesToUse .OrderBy(x => x.CostAuthorityWorkBreakdownStructure) .ToSelectListWithEmptyFirstRow(x => x.CostAuthorityID.ToString(), x => x.CostAuthorityWorkBreakdownStructure, "Select CAWBS"); CostAuthorityJsonList = new CostAuthorityJsonList(reclamationCostAuthoritiesToUse.Select(x => new CostAuthorityJson(x)).ToList()); EditCostAuthorityObligationRequestsFirmaPage = new ViewPageContentViewData(editCostAuthorityObligationRequestsFirmaPage, currentFirmaSession); Organizations = allOrganizations.OrderBy(x => x.GetDisplayName()).ToSelectListWithEmptyFirstRow(x => x.OrganizationID.ToString(), x => x.GetDisplayName()); People = allPeople.OrderBy(x => x.GetFullNameFirstLast()).ToSelectListWithEmptyFirstRow(x => x.PersonID.ToString(), x => x.GetFullNameFirstLast()); BudgetObjectCodes = allBudgetObjectCodes.OrderBy(x => x.GetDisplayName()).ToSelectListWithEmptyFirstRow(x => x.BudgetObjectCodeID.ToString(), x => x.GetDisplayName()); }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static CostAuthorityObligationRequest CreateNewBlank(CostAuthority costAuthority, ObligationRequest obligationRequest) { return(new CostAuthorityObligationRequest(costAuthority, obligationRequest)); }
private static string EditCostAuthorityObligationRequestsUrl(this ProjectFirmaModels.Models.ObligationRequest obligationRequest) { return(SitkaRoute <ObligationRequestController> .BuildUrlFromExpression(x => x.EditCostAuthorityObligationRequests(obligationRequest.PrimaryKey))); }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static ObligationRequestSubmissionNote CreateNewBlank(ObligationRequest obligationRequest) { return(new ObligationRequestSubmissionNote(obligationRequest, default(string), default(DateTime))); }
public static void DeleteObligationRequest(this IQueryable <ObligationRequest> obligationRequests, ObligationRequest obligationRequestToDelete) { DeleteObligationRequest(obligationRequests, new List <ObligationRequest> { obligationRequestToDelete }); }
public ConfirmObligationRequestUnmatchViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.ObligationRequest obligationRequest) : base(currentFirmaSession) { this.ObligationRequest = obligationRequest; }