private bool HasPaidInvoices(Domain.Entities.Contract.Contract contract, params string[] tariffCodes) { var restorationInvoices = contract.PaymentInvoices .Where(pi => tariffCodes.Contains(pi.Tariff.Code)).ToList(); return(restorationInvoices.Any() && restorationInvoices.All(pi => pi.Status.Code != "notpaid")); }
/// <summary> /// Услуги договоров /// </summary> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа "Предварительная экспертиза ДК"</returns> private Expression <Func <DicRouteStage, bool> > ContractPaymentUseLogic( Domain.Entities.Contract.Contract contract) { if (CurrentStageContains(contract, "DK02.1.0")) { return(s => s.Code.Equals("DK02.2")); } return(null); }
private bool HasPaidInvoices(Domain.Entities.Contract.Contract contract, params string[] tariffCodes) { var restorationInvoices = _context.PaymentInvoices.Include(pi => pi.Status) .Include(pi => pi.Tariff) .LastOrDefault(pi => tariffCodes.Contains(pi.Tariff.Code) && pi.RequestId == contract.Id && pi.Status.Code != "notpaid"); return(restorationInvoices != null); }
/// <summary> /// Логика обработки этапов при входящих документах, выписках из государственного реестра /// </summary> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа "Экспертиза по существу"</returns> private Expression <Func <DicRouteStage, bool> > SubstantiveExaminationLogic(Domain.Entities.Contract.Contract contract) { //Ожидается выписка if (CurrentStageContains(contract, "DK02.2.0")) { return(s => s.Code.Equals("DK02.4")); } return(null); }
/// <summary> /// "101_Запрос заявителю" /// </summary> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа "Ожидается ответ на запрос"</returns> private Expression <Func <DicRouteStage, bool> > RequestAnswerWaitingLogic( Domain.Entities.Contract.Contract contract) { //Экспертиза по существу if (CurrentStageContains(contract, "DK02.4")) { return(s => s.Code.Equals("DK02.4.2")); } return(null); }
/// <summary> /// Логика при исходящем документе "Реестры эксп.заключений в МЮ РК (Договора)" /// </summary> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа "Ожидается решение МЮ"</returns> private Expression <Func <DicRouteStage, bool> > MJDesicionWaitLogic( Domain.Entities.Contract.Contract contract) { //Подготовка для передачи в МЮ if (CurrentStageContains(contract, "DK02.7")) { return(s => s.Code.Equals("DK02.8")); } return(null); }
/// <summary> /// Логика обработки этапов при исходящих документах, выписках из государственного реестра /// </summary> /// <param name="document">Документ</param> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа ""</returns> private Expression <Func <DicRouteStage, bool> > ContractConclusionLogic( Domain.Entities.Document.Document document, Domain.Entities.Contract.Contract contract) { if (CurrentStageContains(document, "OUT02.1") && CurrentStageContains(contract, "DK02.5.1")) { return(s => s.Code.Equals("DK02.5.3")); } if (CurrentStageContains(document, "OUT02.2") && CurrentStageContains(contract, "DK02.5.3")) { return(s => s.Code.Equals("DK02.5.4")); } if (CurrentStageContains(document, "OUT02.3") && CurrentStageContains(contract, "DK02.5.4")) { return(s => s.Code.Equals("DK02.7")); } return(null); }
/// <summary> /// Логика при исходящем документе "сопроводительное письмо ДК" /// </summary> /// <param name="contract">Договор</param> /// <returns>Запрос для получения этапа "Ожидается решение МЮ"</returns> private Expression <Func <DicRouteStage, bool> > Logic( Domain.Entities.Contract.Contract contract) { //Уведомление заявителя о решении if (CurrentStageContains(contract, "DK02.9.2")) { // Зарегистрировано if (AnyDocuments(contract, DicDocumentType.Codes.ConclusionAboutRegistrationOfContract)) { return(s => s.Code.Equals("DK02.9.1")); } // Отказано в регистрации if (AnyDocuments(contract, DicDocumentType.Codes.ConclusionAboutRegistrationRefusalOfContract)) { return(s => s.Code.Equals("DK02.9.3")); } } return(null); }
private async Task ApplyStageAsync(Expression <Func <DicRouteStage, bool> > nextStageFunc, Domain.Entities.Contract.Contract contract) { if (nextStageFunc == null) { return; } DicRouteStage nextStage; try { nextStage = await _context.DicRouteStages.SingleAsync(nextStageFunc); } catch (Exception) { Log.Warning($"Workflow logic applier. The next stage query is incorrect: {nextStageFunc}!"); return; } var workflow = new ContractWorkflow { RouteId = nextStage.RouteId, OwnerId = contract.Id, Owner = contract, CurrentStageId = nextStage.Id, CurrentUserId = contract.CurrentWorkflow.CurrentUserId, FromStageId = contract.CurrentWorkflow.CurrentStageId, FromUserId = contract.CurrentWorkflow.CurrentUserId, IsComplete = nextStage.IsLast, IsSystem = nextStage.IsSystem, IsMain = nextStage.IsMain }; await _workflowApplier.ApplyAsync(workflow); }
private bool AnyDocuments(Domain.Entities.Contract.Contract contract, params string[] documentTypeCodes) { return(contract.Documents.Select(rd => rd.Document).Any(d => documentTypeCodes.Contains(d.Type.Code))); }
private bool AnyDocuments(Domain.Entities.Contract.Contract contract, string documentTypeCode) { return(contract.Documents.Select(rd => rd.Document).Any(d => d.Type.Code.Equals(documentTypeCode))); }
private bool CurrentStageContains(Domain.Entities.Contract.Contract contract, params string[] codes) { return(codes.Contains(contract.CurrentWorkflow.CurrentStage.Code)); }