private void ApplyRequestConventionInfo(Domain.Entities.Request.Request request, ConventionInfoDto[] requestConventionInfoDtos) { DeleteRequestConventionInfo(request, requestConventionInfoDtos); AddRangeRequestConventionInfo(request, requestConventionInfoDtos); UpdateRequestConventionInfo(request, requestConventionInfoDtos); }
/// <summary> /// Логика обработки этапов при входящем документе "Ходатайство о восстановлении пропущенного срока" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Готовые для передачи на полную экспертизу" или "Предварительная экспертиза" или "Полная экспертиза" или "Готовые для передачи в Госреестр"</returns> private Expression <Func <DicRouteStage, bool> > RestorationLogic(Domain.Entities.Request.Request request) { if (!HasPaidInvoices(request, DicTariff.Codes.RequestAnswerMissedTimeRestoration)) { return(null); } if (FromStageContains(request, "B02.2.1.0.0") && CurrentStageContains(request, "B03.3.1.1") && HasPaidInvoices(request, DicTariff.Codes.ExtensionAndRestorationTimesForAnswerToExaminationRequest) && AnyDocuments(request, DicDocumentType.Codes.AnswerToRequest)) { return(s => s.Code.Equals("B03.2.1")); } if (CurrentStageContains(request, "B03.3.1.1.1") && HasPaidInvoices(request, DicTariff.Codes.ExaminationOfApplicationForInventionMerits, DicTariff.Codes.AcceleratedExaminationOfApplicationForInventionMerits, DicTariff.Codes.ExaminationOfApplicationForInventionMeritsWithInternationalReport, DicTariff.Codes.ExaminationOfApplicationForInventionMeritsWithSearchReport) && HasPaidInvoices(request, DicTariff.Codes.ExtensionAndRestorationTimesForAnswerToExaminationRequest)) { return(s => s.Code.Equals("B03.2.1.1")); } if (CurrentStageContains(request, "B03.3.1.1.1") && AnyDocuments(request, DicDocumentType.Codes.AnswerToRequest) && HasPaidInvoices(request, DicTariff.Codes.ExtensionAndRestorationTimesForAnswerToExaminationRequest)) { return(s => s.Code.Equals("B03.2.4")); } return(null); }
private void DeleteRequestConventionInfo(Domain.Entities.Request.Request request, ConventionInfoDto[] requestConventionInfoDtos) { if (request?.RequestConventionInfos == null || !request.RequestConventionInfos.Any()) { return; } if (!requestConventionInfoDtos.Any()) { _context.RequestConventionInfos.RemoveRange(request.RequestConventionInfos); } else { request.RequestConventionInfos .ToList() .ForEach(rc => { if (!requestConventionInfoDtos.Select(x => x.Id).Contains(rc.Id)) { _context.RequestConventionInfos.Remove(rc); } }); } }
/// <summary> /// Логика обработки этапов при входящем документе "Ответ на запрос" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Предварительная экспертиза" или "Полная экспертиза"</returns> private Expression <Func <DicRouteStage, bool> > ExaminationLogic(Domain.Entities.Request.Request request) { var formalExamDate = request.Workflows.LastOrDefault(w => w.CurrentStage.Code.Equals("TM03.2.2"))?.DateCreate ?? DateTimeOffset.MinValue; var fullExamDate = request.Workflows.LastOrDefault(w => w.CurrentStage.Code.Equals("TM03.3.2"))?.DateCreate ?? DateTimeOffset.MinValue; if (formalExamDate > fullExamDate) { if (CurrentStageContains(request, "TM03.3.7.1", "TM03.3.7.3")) { return(s => s.Code.Equals("TM03.2.2")); } if (CurrentStageContains(request, "TM03.3.7.0") && HasPaidInvoices(request, DicTariff.Codes.RequestAnswerMissedTimeRestoration) && AnyDocuments(request, DicDocumentType.Codes.PetitionForRestoreTime)) { return(s => s.Code.Equals("TM03.2.2")); } } if (formalExamDate < fullExamDate) { if (CurrentStageContains(request, "TM03.3.7.1", "TM03.3.7.3")) { return(s => s.Code.Equals("TM03.3.2")); } if (CurrentStageContains(request, "TM03.3.7.0") && HasPaidInvoices(request, DicTariff.Codes.RequestAnswerMissedTimeRestoration) && AnyDocuments(request, DicDocumentType.Codes.PetitionForRestoreTime)) { return(s => s.Code.Equals("TM03.3.2")); } } return(null); }
protected bool HasPaidInvoices(Domain.Entities.Request.Request request, params string[] tariffCodes) { var restorationInvoices = request.PaymentInvoices .Where(pi => tariffCodes.Contains(pi.Tariff.Code)).ToList(); return(restorationInvoices.Any() && restorationInvoices.All(pi => pi.Status.Code != "notpaid")); }
private void ApplyColorIds(Domain.Entities.Request.Request request, int[] colorTzIds) { request.ColorTzs .ToList() .ForEach(ir => { if (colorTzIds.Contains(ir.ColorTzId)) { //Exclude existing row colorTzIds = colorTzIds.Where(val => val != ir.ColorTzId).ToArray(); } else { //Clear deleted row _context.DicColorTzRequestRelations.Remove(ir); } }); //Add new rows var colorTzRequestRelations = colorTzIds.Select(id => new DicColorTZRequestRelation { RequestId = request.Id, ColorTzId = id }); foreach (var colorTzRequestRelation in colorTzRequestRelations) { request.ColorTzs.Add(colorTzRequestRelation); } }
private void ApplyIcfemIds(Domain.Entities.Request.Request request, int[] icfemIds) { request.Icfems .ToList() .ForEach(ir => { if (icfemIds.Contains(ir.DicIcfemId)) { //Exclude existing row icfemIds = icfemIds.Where(val => val != ir.DicIcfemId).ToArray(); } else { //Clear deleted row _context.DicIcfemRequestRelations.Remove(ir); } }); //Add new rows var newIcfems = icfemIds.Select(id => new DicIcfemRequestRelation { RequestId = request.Id, DicIcfemId = id }); foreach (var newIcfem in newIcfems) { request.Icfems.Add(newIcfem); } }
private void ApplyIpcIds(Domain.Entities.Request.Request request, int[] ipcIds) { request.IPCRequests .ToList() .ForEach(ip => { if (ipcIds.Contains(ip.IpcId)) { //Exclude existing row ipcIds = ipcIds.Where(val => val != ip.IpcId).ToArray(); } else { //Clear deleted row _context.IPCRequests.Remove(ip); } }); //Add new rows var newIpcs = ipcIds.Select(id => new IPCRequest { RequestId = request.Id, IpcId = id }); foreach (var newIpc in newIpcs) { request.IPCRequests.Add(newIpc); } }
private void UpdateRequestEarlyRegDtos(Domain.Entities.Request.Request request, RequestEarlyRegDto[] requestEarlyRegDtos) { if (request == null || requestEarlyRegDtos == null || !requestEarlyRegDtos.Any()) { return; } request.EarlyRegs .ToList() .ForEach(r => { requestEarlyRegDtos = requestEarlyRegDtos .Where(x => !x.Equals(_mapper.Map <RequestEarlyRegDto>(r)) && x.Id.HasValue) .ToArray(); }); var updateRequestEarlyRegs = _mapper.Map <IEnumerable <RequestEarlyReg> >(requestEarlyRegDtos); foreach (var requestEarlyReg in updateRequestEarlyRegs) { var originRequestEarlyReg = request.EarlyRegs.First(x => x.Id == requestEarlyReg.Id); originRequestEarlyReg.RegCountryId = requestEarlyReg.RegCountryId; originRequestEarlyReg.RegNumber = requestEarlyReg.RegNumber; originRequestEarlyReg.RegDate = requestEarlyReg.RegDate; originRequestEarlyReg.EarlyRegTypeId = requestEarlyReg.EarlyRegTypeId; } }
private void ApplyIcisIds(Domain.Entities.Request.Request request, int[] icisIds) { request.ICISRequests .ToList() .ForEach(ir => { if (icisIds.Contains(ir.IcisId)) { //Exclude existing row icisIds = icisIds.Where(val => val != ir.IcisId).ToArray(); } else { //Clear deleted row _context.ICISRequests.Remove(ir); } }); //Add new rows var newIcisRequests = icisIds.Select(id => new ICISRequest { RequestId = request.Id, IcisId = id }); foreach (var icisRequest in newIcisRequests) { request.ICISRequests.Add(icisRequest); } }
private void DeleteRequestEarlyRegDtos(Domain.Entities.Request.Request request, RequestEarlyRegDto[] requestEarlyRegDtos) { if (request?.EarlyRegs == null || !request.EarlyRegs.Any()) { return; } if (!requestEarlyRegDtos.Any()) { _context.RequestEarlyRegs.RemoveRange(request.EarlyRegs); } else { request.EarlyRegs .ToList() .ForEach(r => { if (!requestEarlyRegDtos.Select(x => x.Id).Contains(r.Id)) { _context.RequestEarlyRegs.Remove(r); } }); } }
private void ApplyRequestEarlyRegDtos(Domain.Entities.Request.Request request, RequestEarlyRegDto[] requestEarlyRegDtos) { DeleteRequestEarlyRegDtos(request, requestEarlyRegDtos); AddRequestEarlyRegDtos(request, requestEarlyRegDtos); UpdateRequestEarlyRegDtos(request, requestEarlyRegDtos); }
private void UpdateRangeIcgsRequest(Domain.Entities.Request.Request request, IcgsDto[] icgsRequestDtos) { if (request == null || icgsRequestDtos == null || !icgsRequestDtos.Any()) { return; } request.ICGSRequests .ToList() .ForEach(ir => { icgsRequestDtos = icgsRequestDtos .Where(x => !x.Equals(_mapper.Map <IcgsDto>(ir)) && x.Id.HasValue) .ToArray(); }); var updateIcgsRequests = ConvertToIcgsRequests(icgsRequestDtos, request.Id); foreach (var icgsRequest in updateIcgsRequests) { var originIcgs = request.ICGSRequests.First(x => x.Id == icgsRequest.Id); originIcgs.ClaimedDescription = icgsRequest.ClaimedDescription; originIcgs.Description = icgsRequest.Description; originIcgs.DescriptionKz = icgsRequest.DescriptionKz; originIcgs.NegativeDescription = icgsRequest.NegativeDescription; originIcgs.IcgsId = icgsRequest.IcgsId; } }
private void UpdateRequestConventionInfo(Domain.Entities.Request.Request request, ConventionInfoDto[] requestConventionInfoDtos) { if (request == null || requestConventionInfoDtos == null || !requestConventionInfoDtos.Any()) { return; } request.RequestConventionInfos .ToList() .ForEach(originRc => { requestConventionInfoDtos = requestConventionInfoDtos.Where(rc => !rc.Equals(_mapper.Map <ConventionInfoDto>(originRc)) && rc.Id.HasValue).ToArray(); }); var updateRequestConventionInfos = _mapper.Map <IEnumerable <RequestConventionInfo> >(requestConventionInfoDtos); foreach (var itemConventionInfo in updateRequestConventionInfos) { var originConventionInfo = request.RequestConventionInfos.First(rc => rc.Id == itemConventionInfo.Id); originConventionInfo.CountryId = itemConventionInfo.CountryId; originConventionInfo.EarlyRegTypeId = itemConventionInfo.EarlyRegTypeId; originConventionInfo.DateInternationalApp = itemConventionInfo.DateInternationalApp; originConventionInfo.HeadIps = itemConventionInfo.HeadIps; originConventionInfo.RegNumberInternationalApp = itemConventionInfo.RegNumberInternationalApp; originConventionInfo.TermNationalPhaseFirsChapter = itemConventionInfo.TermNationalPhaseFirsChapter; originConventionInfo.TermNationalPhaseSecondChapter = itemConventionInfo.TermNationalPhaseSecondChapter; } }
private Expression <Func <DicRouteStage, bool> > DecisionOfAuthorizedBody(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "U03.5")) { return(s => s.Code.Equals("U03.6")); } return(null); }
/// <summary> /// Логика отправки с "Подготовка для передачи в Госреестр" на этап "Готовые для передачи в Госреестр" /// </summary> /// <param name="request">Заявка</param> /// <returns></returns> private Expression <Func <DicRouteStage, bool> > ReadyForIssuanceOfPatent(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "U03.7.1", "U03.3.8")) { return(s => s.Code.Equals("U03.8")); } return(null); }
private Expression <Func <DicRouteStage, bool> > Objection(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "U03.4.0")) { return(s => s.Code.Equals("U03.9")); } return(null); }
private Expression <Func <DicRouteStage, bool> > ReadyToExaminationLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "PO02.2")) { return(s => s.Code.Equals("PO03.0")); } return(null); }
/// <summary> /// Логика обработки этапов при входящем документе "Ходатайство о приостановлении делопроизводства" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Делопроизводство приостановлено"</returns> private Expression <Func <DicRouteStage, bool> > SuspensionLogic(Domain.Entities.Request.Request request) { if (request.ProtectionDocId == null) { return(s => s.Code.Equals("B03.3.9.0")); } return(null); }
/// <summary> /// Логика обработки этапов при входящем документе "Ходатайство о продлении срока подачи возражения " /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Продление срока"</returns> private Expression <Func <DicRouteStage, bool> > ObjectionProlongationLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "B03.3.4.1")) { return(s => s.Code.Equals("B03.3.1.1.0")); } return(null); }
private Expression <Func <DicRouteStage, bool> > PatentRefuseLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "B03.3.4.1.0")) { return(s => s.Code.Equals("B03.3.9")); } return(null); }
/// <summary> /// Логика обработки этапов при входящем документе "Решение уполномоченного органа" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Возвращено с МЮ РК" или "Направлено уведомление о принятии решения"</returns> private Expression <Func <DicRouteStage, bool> > ReturnFromMinistryLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "B03.3.4")) { return(s => s.Code.Equals("B03.3.5")); } return(null); }
/// <summary> /// Логика обработки этапов при входящем документе "Ходатайство об отзыве по просьбе заявителя" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Отозвана"</returns> private Expression <Func <DicRouteStage, bool> > RevocationLogic(Domain.Entities.Request.Request request) { if (request.ProtectionDocId == null) { return(s => s.Code.Equals("TM02.2.3")); } return(null); }
/// <summary> /// Логика обработки этапов при применении оплаты на услуги "Прием заявок и проведение формальной экспертизы на изобретение (при приеме заявки на бумажном носителе)", /// "Прием заявок и проведение формальной экспертизы на изобретение (при электронном приеме заявки)", /// "Прием заявок и ускоренное проведение формальной экспертизы на изобретение по перечню установленного уполномоченным органом", /// "Прием заявок и ускоренное проведение формальной экспертизы на изобретение по перечню установленного уполномоченным органом" /// </summary> /// <param name="request">Заявка</param> /// <returns>Этап "Готовые на передачу на предварительную экспертизу"</returns> private Expression <Func <DicRouteStage, bool> > FormalExaminationPayedLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "B02.2", "B02.3", "B02.2.0.0")) { return(s => s.Code.Equals("B02.2.1")); } return(null); }
private Expression <Func <DicRouteStage, bool> > UV_KPM(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "U03.9") && AnyDocuments(request, DicDocumentType.Codes.DecisionOfAppealsBoard)) { return(s => s.Code.Equals("U03.7.1")); } return(null); }
private Expression <Func <DicRouteStage, bool> > JusticeMinistryReplyLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "TMI03.3.4.2")) { return(s => s.Code.Equals("TMI03.3.4.3")); } return(null); }
/// <summary> /// Логика обработки этапов при входящем документе "Ходатайство о согласии заявителя с экспертным заключением" /// </summary> /// <param name="request">Заявка</param> /// <returns>Запрос для получения этапа "Вынесение окончательного экспертного заключения (с согласием/без согласия/по решению МЮ)"</returns> private Expression <Func <DicRouteStage, bool> > AgreementLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "TM03.3.4.4", "TM03.3.7.3", "TM03.3.7.0") && HasPaidInvoices(request, DicTariff.Codes.RequestAnswerMissedTimeRestoration) && AnyDocuments(request, DicDocumentType.Codes.PetitionForRestoreTime)) { return(s => s.Code.Equals("TM03.3.2.0.0")); } return(null); }
/// <summary> /// Логика отправки заявки на международный товарный знак на этап Продление срока с этапа /// Направлен запрос при получении оплаты и добавлении документа. /// </summary> /// <param name="request"></param> /// <returns></returns> private Expression <Func <DicRouteStage, bool> > RequestTermExtensionLogic(Domain.Entities.Request.Request request) { if (CurrentStageContains(request, "TMI03.3.2.0") && AnyDocuments(request, DicDocumentType.Codes.PetitionForExtendTimeRorResponse)) { return(s => s.Code.Equals("TMI03.3.4.5.1")); } return(null); }
private Expression <Func <DicRouteStage, bool> > ObjectionLogic(Domain.Entities.Request.Request request) { if ((CurrentStageContains(request, "TMI03.3.4.5.1") && FromStageContains(request, "TMI03.3.2.0")) || (CurrentStageContains(request, "TMI03.3.2.0"))) { return(s => s.Code.Equals("TMI03.3.5")); } return(null); }
protected bool HasPaidInvoices(Domain.Entities.Request.Request request, params string[] tariffCodes) { var restorationInvoices = _context.PaymentInvoices.Include(pi => pi.Status) .Include(pi => pi.Tariff) .LastOrDefault(pi => tariffCodes.Contains(pi.Tariff.Code) && pi.RequestId == request.Id && pi.Status.Code != "notpaid"); return(restorationInvoices != null); }