Ejemplo n.º 1
0
 private void ApplyRequestConventionInfo(Domain.Entities.Request.Request request,
                                         ConventionInfoDto[] requestConventionInfoDtos)
 {
     DeleteRequestConventionInfo(request, requestConventionInfoDtos);
     AddRangeRequestConventionInfo(request, requestConventionInfoDtos);
     UpdateRequestConventionInfo(request, requestConventionInfoDtos);
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
            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);
                        }
                    });
                }
            }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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"));
        }
Ejemplo n.º 6
0
            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);
                }
            }
Ejemplo n.º 7
0
            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);
                }
            }
Ejemplo n.º 8
0
            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);
                }
            }
Ejemplo n.º 9
0
            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;
                }
            }
Ejemplo n.º 10
0
            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);
                }
            }
Ejemplo n.º 11
0
            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);
                        }
                    });
                }
            }
Ejemplo n.º 12
0
 private void ApplyRequestEarlyRegDtos(Domain.Entities.Request.Request request,
                                       RequestEarlyRegDto[] requestEarlyRegDtos)
 {
     DeleteRequestEarlyRegDtos(request, requestEarlyRegDtos);
     AddRequestEarlyRegDtos(request, requestEarlyRegDtos);
     UpdateRequestEarlyRegDtos(request, requestEarlyRegDtos);
 }
Ejemplo n.º 13
0
            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;
                }
            }
Ejemplo n.º 14
0
            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;
                }
            }
Ejemplo n.º 15
0
 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);
 }
Ejemplo n.º 16
0
 /// <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);
 }
Ejemplo n.º 17
0
 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);
 }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        /// <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);
        }
Ejemplo n.º 20
0
        /// <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);
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        /// <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);
        }
Ejemplo n.º 23
0
        /// <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);
        }
Ejemplo n.º 24
0
        /// <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);
        }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        /// <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);
        }
Ejemplo n.º 28
0
        /// <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);
        }
Ejemplo n.º 29
0
        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);
        }
Ejemplo n.º 30
0
        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);
        }