Ejemplo n.º 1
0
        /// <summary>
        /// Create or update client visit
        /// </summary>
        /// <param name="saveData">Data to save client visit</param>
        /// <returns>Identifiers of saved client visit</returns>
        public ClientVisitSaveResult ClientVisit_Save(User user, ClientVisit.SaveData saveData, DateTime?saveDate = null)
        {
            if (saveData == null)
            {
                throw new ArgumentNullException("createData can't be null");
            }

            if (saveData.ClientId.HasValue)
            {
                Client client = Client_Get(user, saveData.ClientId.Value);
                if (client == null)
                {
                    throw new DataObjectNotFoundException(string.Format("Клиент с идентификатором {0} не найден", saveData.ClientId.Value));
                }
            }

            SetPolicyEndDate(saveData);
            SetGoznakType(saveData);
            SetPolicy(saveData);
            SetStatus(saveData);
            ClientVisitSaveResult result = ClientDao.Instance.ClientVisit_Save(saveData, user.Id, saveDate);

            SetStatusForReceivedPolicies(user, saveData);

            return(result);
        }
Ejemplo n.º 2
0
        public void ApplyResponse(User user, FundResponseCopyFields fundResponseCopyFields)
        {
            ClientVisit lastClientVisit = clientBusinessLogic.ClientVisit_GetLastClientVisitInGroup(fundResponseCopyFields.ClientVisitGroupId);

            if (lastClientVisit.Status.Id == ClientVisitStatuses.FundError.Id ||
                lastClientVisit.Status.Id == ClientVisitStatuses.Processed.Id ||
                lastClientVisit.Status.Id == ClientVisitStatuses.AnswerPending.Id)
            {
                clientBusinessLogic.ClientVisit_SetStatus(user, lastClientVisit.Id, ClientVisitStatuses.Reconciliation.Id, true);
                lastClientVisit = clientBusinessLogic.ClientVisit_GetLastClientVisitInGroup(fundResponseCopyFields.ClientVisitGroupId);
            }
            else if (lastClientVisit.Status.Id != ClientVisitStatuses.Reconciliation.Id)
            {
                ClientVisit.SaveData newClientVisitData = new ClientVisit.SaveData(lastClientVisit);
                newClientVisitData.Status   = ClientVisitStatuses.Reconciliation.Id;
                newClientVisitData.IsActual = true;
                var saveResult = clientBusinessLogic.ClientVisit_Save(user, newClientVisitData, DateTime.Now);
                lastClientVisit = clientBusinessLogic.ClientVisit_GetLastClientVisitInGroup(fundResponseCopyFields.ClientVisitGroupId);
            }

            if (lastClientVisit.Status.Id == ClientVisitStatuses.Reconciliation.Id)
            {
                FundResponse         response = FundProcessingDao.Instance.FundResponse_Get(fundResponseCopyFields.ResponseId);
                ClientVisit.SaveData data     = ClientVisit.SaveData.BuildSaveData(lastClientVisit);
                response.Apply(data, fundResponseCopyFields.NewFields, fundResponseCopyFields.OldFields);
                clientBusinessLogic.ClientVisit_Save(user, data);
            }
        }
Ejemplo n.º 3
0
        public SaveClientVisitTableSet(ClientVisit.SaveData data, long?clientId)
        {
            oldClientVersionDataTable    = GetClientVersionTableDeclaration();
            newClientVersionDataTable    = GetClientVersionTableDeclaration();
            oldDocumentDataTable         = GetDocumentTableDeclaration();
            newDocumentDataTable         = GetDocumentTableDeclaration();
            newForeignDocument           = GetDocumentTableDeclaration();
            oldForeignDocument           = GetDocumentTableDeclaration();
            livingAddressDataTable       = GetAddressTableDeclaration();
            registrationAddressDataTable = GetAddressTableDeclaration();
            oldPolicyInfoDataTable       = GetPolicyInfoTableDeclaration();
            newPolicyInfoDataTable       = GetPolicyInfoTableDeclaration();
            representativeDataTable      = GetRepresentativeTableDeclaration();

            AddRowToClientVersionTable(oldClientVersionDataTable, clientId, data.OldClientInfo);
            AddRowToClientVersionTable(newClientVersionDataTable, clientId, data.NewClientInfo);
            AddRowToDocumentTable(oldDocumentDataTable, data.OldDocument);
            AddRowToDocumentTable(newDocumentDataTable, data.NewDocument);
            AddRowToDocumentTable(newForeignDocument, data.NewForeignDocument);
            AddRowToDocumentTable(oldForeignDocument, data.OldForeignDocument);
            AddRowToAddressTable(livingAddressDataTable, data.LivingAddress);
            AddRowToAddressTable(registrationAddressDataTable, data.RegistrationAddress);
            AddRowToPolicyInfoTable(oldPolicyInfoDataTable, data.OldPolicy);
            AddRowToPolicyInfoTable(newPolicyInfoDataTable, data.NewPolicy);
            AddRowToRepresentativeTable(representativeDataTable, data.Representative);
        }
Ejemplo n.º 4
0
 public ClientVisitOldDataBuilder(ClientVisit.SaveData clientVisit, List <IReconciliationFundResponse> responses)
 {
     this.clientVisit = clientVisit;
     newS5            = responses.FirstOrDefault(item =>
                                                 (item.GetType() == typeof(S5FundResponse.CreateData) || item.GetType() == typeof(S5FundResponse)) && item.DataType == EntityType.New && item.Order == 1);
     oldS5 = responses.FirstOrDefault(item =>
                                      (item.GetType() == typeof(S5FundResponse.CreateData) || item.GetType() == typeof(S5FundResponse)) && item.DataType == EntityType.Old && item.Order == 1);
     s6 = responses.FirstOrDefault(item =>
                                   (item.GetType() == typeof(S6FundResponse.CreateData) || item.GetType() == typeof(S6FundResponse)) && item.Order == 1);
     s9 = responses.FirstOrDefault(item =>
                                   (item.GetType() == typeof(S9FundResponse.CreateData) || item.GetType() == typeof(S9FundResponse)) && item.Order == 1);
     snils = responses.FirstOrDefault(item =>
                                      (item.GetType() == typeof(SnilsFundResponse.CreateData) || item.GetType() == typeof(SnilsFundResponse)) && item.Order == 1);
     oldDataProcessors = new Dictionary <long, Action>();
     oldDataProcessors.Add(ClientVisitScenaries.FirstRequestENP.Id, ProcessNB);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationMoscowENPWithoutFIO.Id, ProcessCI);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationRegionalENPWithoutFIO.Id, ProcessCT);
     oldDataProcessors.Add(ClientVisitScenaries.NewUnifiedPolicyNumberByKMSOtherSMO.Id, ProcessPI);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationRegionalOldPolicyWithoutFIO.Id, ProcessPT);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationMoscowENPWithFIO.Id, ProcessRI);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationRegionalENPWithFIO.Id, ProcessRT);
     oldDataProcessors.Add(ClientVisitScenaries.NewUnifiedPolicyNumberByKMSOtherSMOWithFIO.Id, ProcessPRI);
     oldDataProcessors.Add(ClientVisitScenaries.ReregistrationRegionalOldPolicyWithFIO.Id, ProcessPRT);
     oldDataProcessors.Add(ClientVisitScenaries.RequestENPSameSMOChangeFIO.Id, ProcessCR);
     oldDataProcessors.Add(ClientVisitScenaries.NewUnifiedPolicyNumberByKMS.Id, ProcessCP);
     oldDataProcessors.Add(ClientVisitScenaries.NewUnifiedPolicyNumberByOldPolicy.Id, ProcessPR);
     oldDataProcessors.Add(ClientVisitScenaries.PolicyMerge.Id, ProcessMP);
     oldDataProcessors.Add(ClientVisitScenaries.PolicySeparation.Id, ProcessRD);
     oldDataProcessors.Add(ClientVisitScenaries.ChangeDocument.Id, ProcessCD);
     oldDataProcessors.Add(ClientVisitScenaries.RemoveFromRegister.Id, ProcessCLR);
     oldDataProcessors.Add(ClientVisitScenaries.PolicyExtradition.Id, ProcessPOK);
     oldDataProcessors.Add(ClientVisitScenaries.PolicyRecovery.Id, ProcessAD);
     oldDataProcessors.Add(ClientVisitScenaries.LostENPWithoutFIO.Id, ProcessDP);
 }
Ejemplo n.º 5
0
        /// <summary>
        /// При установке галочки "Готов к выгрузке"
        /// </summary>
        /// <param name="user"></param>
        /// <param name="id"></param>
        /// <param name="isReady"></param>
        /// <param name="message"></param>
        public void ClientVisit_SetReadyToFundSubmitRequest(User user, long id, bool isReady, string message)
        {
            if (isReady)
            {
                ClientVisit clientVisit = clientBusinessLogic.ClientVisit_Get(id);
                if (clientVisit.IsReadyToFundSubmitRequest)
                {
                    return;
                }
                ClientVisit.SaveData data = ClientVisit.SaveData.BuildSaveData(clientVisit);
                IEnumerable <ReconciliationFundResponse> responses = FundProcessingDao.Instance.FundResponse_GetList(id).OrderByDescending(item => item.CreateDate).OfType <ReconciliationFundResponse>();
                ClientVisit firstClientVisit = clientBusinessLogic.ClientVisit_GetFirstClientVisitInGroup(clientVisit.VisitGroupId);

                //ClientVisitOldDataBuilder oldDataBuilder = new ClientVisitOldDataBuilder(data, responses.OfType<IReconciliationFundResponse>().ToList());
                ClientVisitNewDataBuilder newDataBuilder = new ClientVisitNewDataBuilder(data, firstClientVisit, responses);
                //data = oldDataBuilder.Process();
                data = newDataBuilder.Process();

                //если установлена дата начала полиса и НЕ установлена дата окончания
                if (data.OldPolicy.StartDate.HasValue && !data.OldPolicy.EndDate.HasValue)
                {
                    data.OldPolicy.EndDate = new DateTime(2099, 12, 31);
                }
                if (data.NewPolicy.StartDate.HasValue && !data.NewPolicy.EndDate.HasValue)
                {
                    data.NewPolicy.EndDate = new DateTime(2099, 12, 31);
                }

                clientBusinessLogic.ClientVisit_Save(user, data);
            }
            FundProcessingDao.Instance.ClientVisit_SetReadyToFundSubmitRequest(id, isReady, message, DateTime.Now);
        }
Ejemplo n.º 6
0
 public POKProcessor(ClientVisit.SaveData clientVisit, List <ReconciliationFundResponse.CreateData> responses)
 {
     this.clientVisit = clientVisit;
     this.responses   = responses;
     newS5            = responses.OfType <S5FundResponse.CreateData>().FirstOrDefault(item => item.DataTypeId == (int)EntityType.New && item.Order == 1);
     oldS5            = responses.OfType <S5FundResponse.CreateData>().FirstOrDefault(item => item.DataTypeId == (int)EntityType.Old && item.Order == 1);
 }
Ejemplo n.º 7
0
        public void ClientVisitCreate_NewUser()
        {
            Client.CreateData   clientCreateData = ClientGenerator.GetClientCreateData("Иван", "Иванович", "Иванов", "1");
            ClientBusinessLogic bll = new ClientBusinessLogic();

            ClientVisit.SaveData data = ClientGenerator.GetClientVisitSaveDataForNewUser();
            long clientId             = bll.ClientVisit_Save(new User()
            {
                Roles = new List <Role>()
                {
                    Role.Administrator
                }
            }, data).ClientID;
            Client client = bll.Client_Get(new User()
            {
                Roles = new List <Role>()
                {
                    Role.Administrator
                }
            }, clientId);
            long visitId = client.Visits.OrderByDescending(item => item.StatusDate).FirstOrDefault().Id;

            ClientVisit visit = bll.ClientVisit_Get(visitId);

            Assert.IsNotNull(visit);
            Assert.IsNotNull(visit.LivingAddress);
            Assert.IsNotNull(visit.RegistrationAddress);
            Assert.IsNotNull(visit.OldClientInfo);
            Assert.IsNotNull(visit.NewClientInfo);
            Assert.IsNotNull(visit.OldDocument);
            Assert.IsNotNull(visit.NewDocument);
            Assert.IsNotNull(visit.NewPolicy);
            Assert.IsNotNull(visit.OldPolicy);
        }
Ejemplo n.º 8
0
 public static ClientVisit.SaveData GetClientVisitSaveDataForNewUser()
 {
     ClientVisit.SaveData clientVisit = new ClientVisit.SaveData();
     clientVisit.TemporaryPolicyDate     = DateTime.Now.AddYears(-1);
     clientVisit.TemporaryPolicyNumber   = null;
     clientVisit.ScenarioId              = referenceBll.GetReferencesList(Constants.ScenarioRef).FirstOrDefault().Id;
     clientVisit.DeliveryCenterId        = referenceBll.GetReferencesList(Constants.DeliveryCenterRef).FirstOrDefault().Id;
     clientVisit.LivingAddress           = AddressGenerator.GetAddressSaveData(null);
     clientVisit.RegistrationAddress     = AddressGenerator.GetAddressSaveData(null);
     clientVisit.RegistrationAddressDate = DateTime.Now.AddYears(-2);
     clientVisit.NewClientInfo           = GetClientVersionSaveData("Иван", "Иванович", "Иванов", "1");
     clientVisit.OldClientInfo           = GetClientVersionSaveData("Петр", "Петрович", "Петров", "1");
     clientVisit.OldDocument             = DocumentGenerator.GetDocumentSaveData(null);
     clientVisit.NewDocument             = DocumentGenerator.GetDocumentSaveData(null);
     clientVisit.NewPolicy          = PolicyGenerator.GetPolicyInfoSaveData(null);
     clientVisit.OldPolicy          = PolicyGenerator.GetPolicyInfoSaveData(null);
     clientVisit.NewForeignDocument = DocumentGenerator.GetDocumentSaveData(null);
     clientVisit.OldForeignDocument = DocumentGenerator.GetDocumentSaveData(null);
     clientVisit.RegistratorId      = 1;
     clientVisit.Representative     = new Representative.SaveData();
     clientVisit.Phone               = "(954)223-11-23";
     clientVisit.ArchivationDate     = DateTime.Now;
     clientVisit.AttachmentDate      = DateTime.Now;
     clientVisit.AttachmentTypeId    = null;
     clientVisit.DeregistrationDate  = DateTime.Now;
     clientVisit.GOZNAKTypeId        = referenceBll.GetReferencesList(Constants.GOZNAKTypeRef).FirstOrDefault().Id;
     clientVisit.DeliveryPointId     = referenceBll.GetReferencesList(Constants.DeliveryPointRef).FirstOrDefault().Id;
     clientVisit.CarrierId           = referenceBll.GetReferencesList(Constants.CarriersRef).FirstOrDefault().Id;
     clientVisit.ApplicationMethodId = referenceBll.GetReferencesList(Constants.ApplicationMethodRef).FirstOrDefault().Id;
     return(clientVisit);
 }
 public SecondStepReconciliationProcessor(ClientVisit.SaveData clientVisit, List <ReconciliationFundResponse.CreateData> responses)
 {
     this.clientVisit = clientVisit;
     this.responses   = responses;
     newS5            = responses.OfType <S5FundResponse.CreateData>().FirstOrDefault(item => item.DataTypeId == (int)EntityType.New && item.Order == 1);
     oldS5            = responses.OfType <S5FundResponse.CreateData>().FirstOrDefault(item => item.DataTypeId == (int)EntityType.Old && item.Order == 1);
     s6    = responses.OfType <S6FundResponse.CreateData>().FirstOrDefault(item => item.Order == 1 && item.FundAnswer == S6FundResponse.OK_Answer);
     s9    = responses.OfType <S9FundResponse.CreateData>().FirstOrDefault(item => item.Order == 1 && item.FundAnswer == S9FundResponse.OK_Answer);
     snils = responses.OfType <SnilsFundResponse.CreateData>().FirstOrDefault(item => item.Order == 1 && item.FundAnswer == SnilsFundResponse.OK_Answer);
 }
Ejemplo n.º 10
0
        public void ClientVisit_Find()
        {
            Client.CreateData   clientCreateData = ClientGenerator.GetClientCreateData("Иван", "Иванович", "Иванов", "1");
            ClientBusinessLogic bll = new ClientBusinessLogic();

            ClientVisit.SaveData data = ClientGenerator.GetClientVisitSaveDataForNewUser();
            long clientId             = bll.ClientVisit_Save(new User()
            {
                Roles = new List <Role>()
                {
                    Role.Administrator
                }
            }, data).ClientID;
            Client client = bll.Client_Get(new User()
            {
                Roles = new List <Role>()
                {
                    Role.Administrator
                }
            }, clientId);
            long        visitId = client.Visits.OrderByDescending(item => item.StatusDate).FirstOrDefault().Id;
            ClientVisit visit   = bll.ClientVisit_Get(visitId);
            ClientVisitSearchCriteria criteria = new ClientVisitSearchCriteria();

            criteria.Firstname         = data.NewClientInfo.Firstname;
            criteria.Secondname        = data.NewClientInfo.Secondname;
            criteria.Lastname          = data.NewClientInfo.Lastname;
            criteria.Birthday          = data.NewClientInfo.Birthday;
            criteria.DeliveryCenterIds = new List <long>();
            if (data.DeliveryCenterId.HasValue)
            {
                criteria.DeliveryCenterIds.Add(data.DeliveryCenterId.Value);
            }
            criteria.Id           = visitId;
            criteria.PolicyDateTo = visit.IssueDate;
            criteria.PolicyNumber = visit.NewPolicy.Number;
            criteria.PolicySeries = visit.NewPolicy.Series;
            criteria.StatusIds    = new List <long>();
            if (data.Status.HasValue)
            {
                criteria.StatusIds.Add(data.Status.Value);
            }
            criteria.TemporaryPolicyDateTo = visit.TemporaryPolicyDate;
            criteria.TemporaryPolicyNumber = visit.TemporaryPolicyNumber;
            DataPage <ClientVisitInfo> list = bll.ClientVisit_Find(
                criteria,
                new List <SortCriteria <ClientVisitSortField> >(),
                new PageRequest()
            {
                PageNumber = 1, PageSize = 10
            });

            Assert.AreEqual(list.Count, 1);
        }
Ejemplo n.º 11
0
 private static void CopyNewClientToOldClientData(ClientVisit.SaveData saveData)
 {
     if (!string.IsNullOrEmpty(saveData.OldDocument.Number))
     {
         if (string.IsNullOrEmpty(saveData.OldClientInfo.Firstname) &&
             !string.IsNullOrEmpty(saveData.NewClientInfo.Firstname))
         {
             saveData.OldClientInfo.Firstname       = saveData.NewClientInfo.Firstname;
             saveData.OldClientInfo.FirstnameTypeId = saveData.NewClientInfo.FirstnameTypeId;
         }
         if (string.IsNullOrEmpty(saveData.OldClientInfo.Secondname) &&
             !string.IsNullOrEmpty(saveData.NewClientInfo.Secondname))
         {
             saveData.OldClientInfo.Secondname       = saveData.NewClientInfo.Secondname;
             saveData.OldClientInfo.SecondnameTypeId = saveData.NewClientInfo.SecondnameTypeId;
         }
         if (string.IsNullOrEmpty(saveData.OldClientInfo.Lastname) &&
             !string.IsNullOrEmpty(saveData.NewClientInfo.Lastname))
         {
             saveData.OldClientInfo.Lastname       = saveData.NewClientInfo.Lastname;
             saveData.OldClientInfo.LastnameTypeId = saveData.NewClientInfo.LastnameTypeId;
         }
         if (!saveData.OldClientInfo.Birthday.HasValue &&
             saveData.NewClientInfo.Birthday.HasValue)
         {
             saveData.OldClientInfo.Birthday = saveData.NewClientInfo.Birthday;
         }
         if (!saveData.OldClientInfo.Category.HasValue &&
             saveData.NewClientInfo.Category.HasValue)
         {
             saveData.OldClientInfo.Category = saveData.NewClientInfo.Category;
         }
         if (!saveData.OldClientInfo.Citizenship.HasValue &&
             saveData.NewClientInfo.Citizenship.HasValue)
         {
             saveData.OldClientInfo.Citizenship = saveData.NewClientInfo.Citizenship;
         }
         if (string.IsNullOrEmpty(saveData.OldClientInfo.SNILS) &&
             !string.IsNullOrEmpty(saveData.NewClientInfo.SNILS))
         {
             saveData.OldClientInfo.SNILS = saveData.NewClientInfo.SNILS;
         }
         if (string.IsNullOrEmpty(saveData.OldClientInfo.Birthplace) &&
             !string.IsNullOrEmpty(saveData.NewClientInfo.Birthplace))
         {
             saveData.OldClientInfo.Birthplace = saveData.NewClientInfo.Birthplace;
         }
         if (!saveData.OldClientInfo.Sex.HasValue &&
             saveData.NewClientInfo.Sex.HasValue)
         {
             saveData.OldClientInfo.Sex = saveData.NewClientInfo.Sex;
         }
     }
 }
Ejemplo n.º 12
0
        public ClientVisit.SaveData GetClientVisitSaveData()
        {
            ClientVisit.SaveData data = new ClientVisit.SaveData();

            data.Id                            = VisitId;
            data.VisitGroupId                  = this.VisitGroupId;
            data.RegistratorId                 = this.Registrator.Id.Value;
            data.DeliveryPointId               = this.DeliveryPointId;
            data.ScenarioId                    = this.ScenarioId;
            data.NewClientInfo                 = this.NewClientInfo.GetForBLL();
            data.OldClientInfo                 = this.OldClientInfo.GetForBLL();
            data.ClientId                      = this.ClientId;
            data.LivingAddress                 = this.LivingAddress.GetForBLL();
            data.RegistrationAddress           = this.RegistrationAddress.GetForBLL();
            data.NewDocument                   = this.NewDocument.GetForBLL();
            data.OldDocument                   = this.OldDocument.GetForBLL();
            data.OldForeignDocument            = this.OldForeignDocument.GetForBLL();
            data.NewForeignDocument            = this.NewForeignDocument.GetForBLL();
            data.NewPolicy                     = this.NewPolicy.GetForBLL();
            data.OldPolicy                     = this.OldPolicy.GetForBLL();
            data.Representative                = this.Representative.GetForBLL();
            data.RegistrationAddressDate       = this.RegistrationAddressDate;
            data.TemporaryPolicyDate           = this.TemporaryPolicyDate;
            data.TemporaryPolicyExpirationDate = this.TemporaryPolicyExpirationDate;
            data.TemporaryPolicyNumber         = this.TemporaryPolicyNumber;
            data.GOZNAKTypeId                  = this.GOZNAKTypeId;
            data.IssueDate                     = this.IssueDate;
            data.IsActual                      = this.IsActual;
            data.AttachmentDate                = this.AttachmentDate;
            data.AttachmentTypeId              = this.AttachmentTypeId;
            data.MedicalCentreId               = this.MedicalCentreId;
            data.Email                         = this.Email;
            data.Phone                         = this.Phone;
            data.UralsibCard                   = this.UralsibCard;
            data.PolicyPartyNumber             = this.PolicyPartyNumber;
            data.CarrierId                     = this.CarrierId;
            data.ApplicationMethodId           = this.ApplicationMethodId == 0 ? new long() : this.ApplicationMethodId;
            data.Comment                       = this.Comment;
            data.GOZNAKDate                    = this.GOZNAKDate;
            data.ClientCategoryId              = this.ClientCategoryId == 0 ? new long() : this.ClientCategoryId;
            data.DeliveryCenterId              = this.DeliveryCenterId;
            data.ClientAcquisitionEmployee     = this.ClientAcquisitionEmployee;
            data.ClientContacts                = this.ClientContacts;
            data.SignatureFileName             = this.SignatureFileName;
            data.PhotoFileName                 = this.PhotoFileName;
            data.Status                        = this.StatusId == 0 ? new long?() : this.StatusId;
            data.StatusDate                    = this.StatusDate == default(DateTime) ? new DateTime?() : this.StatusDate;
            data.OldSystemId                   = OldSystemId;
            data.FundResponseApplyingMessage   = this.FundResponseApplyingMessage;
            data.IsReadyToFundSubmitRequest    = this.IsReadyToFundSubmitRequest;
            data.IsDifficultCase               = this.IsDifficultCase;
            return(data);
        }
Ejemplo n.º 13
0
        private void SetPolicy(ClientVisit.SaveData saveData)
        {
            if (string.IsNullOrEmpty(saveData.NewPolicy.UnifiedPolicyNumber) &&
                !string.IsNullOrEmpty(saveData.OldPolicy.UnifiedPolicyNumber))
            {
                saveData.NewPolicy.UnifiedPolicyNumber = saveData.OldPolicy.UnifiedPolicyNumber;
            }

            if (saveData.Status == ClientVisitStatuses.SubmitPending.Id &&
                !string.IsNullOrEmpty(saveData.OldDocument.Number))
            {
                CopyNewClientToOldClientData(saveData);
            }
        }
Ejemplo n.º 14
0
 private void SetStatus(ClientVisit.SaveData saveData)
 {
     //если статус "полис изготовлен" + сценарий POK + дата отсутствует, то проставлять текущую дату в поле "дата выдачи полиса"
     if (saveData.ClientId.HasValue && saveData.Id.HasValue)
     {
         if (saveData.Status == ClientVisitStatuses.PolicyReadyForClient.Id &&
             saveData.ScenarioId == ClientVisitScenaries.PolicyExtradition.Id)
         {
             if (!saveData.IssueDate.HasValue)
             {
                 saveData.IssueDate = DateTime.Now;
             }
         }
     }
 }
Ejemplo n.º 15
0
 /// <summary>
 /// Set status PolicyExtradition for clientVisit with IssueDate
 /// </summary>
 /// <param name="saveData">Data to dave policy</param>
 private void SetStatusForReceivedPolicies(User user, ClientVisit.SaveData saveData)
 {
     if (saveData.ClientId.HasValue && saveData.Id.HasValue)
     {
         ClientVisit clientVisit = ClientVisit_Get(saveData.Id.Value);
         if (clientVisit.Status.Id == ClientVisitStatuses.PolicyReadyForClient.Id
             //&& saveData.IssueDate.HasValue
             && saveData.ScenarioId == ClientVisitScenaries.PolicyExtradition.Id)
         {
             if (!saveData.IssueDate.HasValue)
             {
                 saveData.IssueDate = DateTime.Now;
             }
             ClientVisit_SetStatus(user, clientVisit.Id, ClientVisitStatuses.PolicyIssued.Id, true);
         }
     }
 }
Ejemplo n.º 16
0
        public List <FundResponse.UploadReportData> Upload_SecondStepReconciliationPack(User user, string zipPath)
        {
            List <FundResponse.UploadReportData> report = new List <FundResponse.UploadReportData>();
            string zipDirectoryName = Path.Combine(ConfiguraionProvider.FileStorageFolder, Path.GetFileNameWithoutExtension(zipPath));

            ZipHelper.UnZipFiles(zipPath, zipDirectoryName);
            FundResponseCreateDataBuilder builder = new FundResponseCreateDataBuilder();
            var      responsesToCreate            = GetResponsesFromArchive(builder, zipDirectoryName);
            var      responsesByclientVisitId     = GroupByClientVisitId(report, responsesToCreate);
            DateTime date = DateTime.Now;

            foreach (var pack in responsesByclientVisitId)
            {
                long        clientVisitId = pack.Key;
                ClientVisit clientVisit   = ClientDao.Instance.ClientVisit_Get(clientVisitId);
                if (clientVisit == null)
                {
                    foreach (var response in pack.Value)
                    {
                        report.Add(new FundResponse.UploadReportData()
                        {
                            Recid            = response.Recid,
                            ClientVisitId    = clientVisitId,
                            ResponseTypeName = response.GetResponseTypeName(),
                            UploadResult     = "Не найдена соответствующая заявка"
                        });
                    }
                    continue;
                }
                ClientVisit lastClientVisitInGroup = ClientDao.Instance.ClientVisit_GetLastClientVisitInGroup(clientVisit.VisitGroupId);
                foreach (var response in pack.Value)
                {
                    FundProcessingDao.Instance.FundResponse_Create(response, date);
                    report.Add(AddReportItem(lastClientVisitInGroup, response, lastClientVisitInGroup.Id));
                }
                ClientVisit.SaveData data = ClientVisit.SaveData.BuildSaveData(lastClientVisitInGroup);
                SecondStepReconciliationProcessor processor = new SecondStepReconciliationProcessor(data, pack.Value.OfType <ReconciliationFundResponse.CreateData>().ToList());
                processor.Process();
                if (processor.IsChanged)
                {
                    clientBusinessLogic.ClientVisit_Save(user, data);
                }
            }
            return(report);
        }
Ejemplo n.º 17
0
 private ClientVisit.SaveData BuildUpdatedClientVisitSaveData(ClientVisit.UpdateData updateClientVisitItem, ClientVisit visit)
 {
     ClientVisit.SaveData data = new ClientVisit.SaveData(visit);
     data.Blanc                         = updateClientVisitItem.Blanc;
     data.N_KOR                         = updateClientVisitItem.N_KOR;
     data.DATA_FOND                     = updateClientVisitItem.DATA_FOND;
     data.NZ_GOZNAK                     = updateClientVisitItem.NZ_GOZNAK;
     data.PolicyPartyNumber             = updateClientVisitItem.PolicyPartyNumber.Trim();
     data.NewPolicy.UnifiedPolicyNumber = updateClientVisitItem.UnifiedPolicyNumber.Trim();
     data.NewPolicy.OGRN                = updateClientVisitItem.OGRN.Trim();
     data.NewClientInfo.Lastname        = updateClientVisitItem.Lastname.Trim();
     data.NewClientInfo.Firstname       = updateClientVisitItem.Firstname.Trim();
     data.NewClientInfo.Secondname      = updateClientVisitItem.Secondname.Trim();
     data.NewClientInfo.Birthday        = updateClientVisitItem.Birthday;
     data.Dat_U                         = updateClientVisitItem.Dat_U;
     data.Dat_S                         = updateClientVisitItem.Dat_S;
     return(data);
 }
Ejemplo n.º 18
0
 private bool CheckBSO(ClientVisit.SaveData data, BSO bso, out string errorMessage)
 {
     if (bso != null)
     {
         if (bso.Status.Id != (long)ListBSOStatusID.OnDelivery)
         {
             errorMessage = string.Format("БСО {0} не находится в статусе 'На точке'", bso.TemporaryPolicyNumber);
             return(false);
         }
         if (bso.DeliveryCenterId != data.DeliveryCenterId)
         {
             errorMessage = string.Format("БСО {0} не находится на другой точке {1}", bso.TemporaryPolicyNumber, bso.DeliveryCenterId);
             return(false);
         }
         errorMessage = null;
         return(true);
     }
     else
     {
         errorMessage = string.Format("БСО с номером {0} не найден", data.TemporaryPolicyNumber);
         return(false);
     }
 }
Ejemplo n.º 19
0
        /// <summary>
        /// Set default policy end date by client category
        /// </summary>
        private void SetPolicyEndDate(ClientVisit.SaveData saveData)
        {
            long?clientCategoryId    = saveData.NewClientInfo.Category;
            long registredForeign    = 3;
            long notRegistredForeign = 5;
            long refugee             = 4;

            if (!saveData.NewPolicy.EndDate.HasValue)
            {
                if (clientCategoryId == registredForeign || clientCategoryId == notRegistredForeign)
                {
                    saveData.NewPolicy.EndDate = saveData.NewForeignDocument.ExpirationDate;
                }
                else if (clientCategoryId == refugee)
                {
                    saveData.NewPolicy.EndDate = saveData.NewDocument.ExpirationDate;
                }
                else
                {
                    saveData.NewPolicy.EndDate = new DateTime(2099, 12, 31);
                }
            }
        }
Ejemplo n.º 20
0
        public ClientVisitSaveResult ClientVisit_Save(ClientVisit.SaveData saveData, long?currentUserId, DateTime?saveDate = null)
        {
            List <SqlParameter> parameters = new List <SqlParameter>();

            SaveClientVisitTableSet clientVisitTableSet = new SaveClientVisitTableSet(saveData, saveData.ClientId);

            parameters.AddInputParameter("@UserId", SqlDbType.BigInt, currentUserId);
            parameters.AddInputParameter("@RegistratorId", SqlDbType.BigInt, saveData.RegistratorId);
            parameters.AddInputParameter("@DeliveryCenterId", SqlDbType.BigInt, saveData.DeliveryCenterId);
            parameters.AddInputParameter("@TemporaryPolicyDate", SqlDbType.DateTime, saveData.TemporaryPolicyDate);
            parameters.AddInputParameter("@TemporaryPolicyExpirationDate", SqlDbType.DateTime, saveData.TemporaryPolicyExpirationDate);
            parameters.AddInputParameter("@TemporaryPolicyNumber", SqlDbType.NVarChar, saveData.TemporaryPolicyNumber);
            parameters.AddInputParameter("@ScenarioId", SqlDbType.BigInt, saveData.ScenarioId);
            parameters.AddInputParameter("@GOZNAKTypeId", SqlDbType.BigInt, saveData.GOZNAKTypeId);
            parameters.AddInputParameter("@IssueDate", SqlDbType.DateTime, saveData.IssueDate);
            parameters.AddInputParameter("@IsActual", SqlDbType.Bit, saveData.IsActual);
            parameters.AddInputParameter("@InfoSource", SqlDbType.NVarChar, saveData.InfoSource);
            parameters.AddInputParameter("@DeregistrationDate", SqlDbType.DateTime, saveData.DeregistrationDate);
            parameters.AddInputParameter("@ArchivationDate", SqlDbType.DateTime, saveData.ArchivationDate);
            parameters.AddInputParameter("@AttachmentDate", SqlDbType.DateTime, saveData.AttachmentDate);
            parameters.AddInputParameter("@AttachmentTypeId", SqlDbType.BigInt, saveData.AttachmentTypeId);
            parameters.AddInputParameter("@MedicalCentreId", SqlDbType.BigInt, saveData.MedicalCentreId);
            parameters.AddInputParameter("@CarrierId", SqlDbType.BigInt, saveData.CarrierId);
            parameters.AddInputParameter("@ApplicationMethodId", SqlDbType.BigInt, saveData.ApplicationMethodId);
            parameters.AddInputParameter("@Comment", SqlDbType.NVarChar, saveData.Comment);
            parameters.AddInputParameter("@GOZNAKDate", SqlDbType.Date, saveData.GOZNAKDate);
            parameters.AddInputParameter("@ClientCategoryId", SqlDbType.BigInt, saveData.ClientCategoryId);
            parameters.AddInputParameter("@DeliveryPointId", SqlDbType.BigInt, saveData.DeliveryPointId);
            parameters.AddInputParameter("@ClientAcquisitionEmployee", SqlDbType.NVarChar, saveData.ClientAcquisitionEmployee);
            parameters.AddInputParameter("@ClientContacts", SqlDbType.NVarChar, saveData.ClientContacts);
            parameters.AddInputParameter("@Email", SqlDbType.NVarChar, saveData.Email);
            parameters.AddInputParameter("@UralsibCard", SqlDbType.Bit, saveData.UralsibCard);
            parameters.AddInputParameter("@Blanc", SqlDbType.NVarChar, saveData.Blanc);
            parameters.AddInputParameter("@N_KOR", SqlDbType.NVarChar, saveData.N_KOR);
            parameters.AddInputParameter("@DATA_FOND", SqlDbType.Date, saveData.DATA_FOND);
            parameters.AddInputParameter("@NZ_GOZNAK", SqlDbType.NVarChar, saveData.NZ_GOZNAK);
            parameters.AddInputParameter("@Dat_U", SqlDbType.Date, saveData.Dat_U);
            parameters.AddInputParameter("@Dat_S", SqlDbType.Date, saveData.Dat_S);
            parameters.AddInputParameter("@SignatureFileName", SqlDbType.NVarChar, saveData.SignatureFileName);
            parameters.AddInputParameter("@PhotoFileName", SqlDbType.NVarChar, saveData.PhotoFileName);
            parameters.AddInputParameter("@Phone", SqlDbType.NVarChar, saveData.Phone);
            parameters.AddInputParameter("@PartyNumber", SqlDbType.NVarChar, saveData.PolicyPartyNumber);
            parameters.AddInputParameter("@FundResponseApplyingMessage", SqlDbType.NVarChar, saveData.FundResponseApplyingMessage);
            parameters.AddInputParameter("@IsReadyToFundSubmitRequest", SqlDbType.Bit, saveData.IsReadyToFundSubmitRequest);
            parameters.AddInputParameter("@IsDifficultCase", SqlDbType.Bit, saveData.IsDifficultCase);

            parameters.AddInputParameter("@OldClientVersion", SqlDbType.Structured, clientVisitTableSet.OldClientVersionDataTable);
            parameters.AddInputParameter("@NewClientVersion", SqlDbType.Structured, clientVisitTableSet.NewClientVersionDataTable);
            parameters.AddInputParameter("@OldDocument", SqlDbType.Structured, clientVisitTableSet.OldDocumentDataTable);
            parameters.AddInputParameter("@NewDocument", SqlDbType.Structured, clientVisitTableSet.NewDocumentDataTable);
            parameters.AddInputParameter("@OldForeignDocument", SqlDbType.Structured, clientVisitTableSet.OldForeignDocument);
            parameters.AddInputParameter("@NewForeignDocument", SqlDbType.Structured, clientVisitTableSet.NewForeignDocument);
            parameters.AddInputParameter("@LivingAddress", SqlDbType.Structured, clientVisitTableSet.LivingAddressDataTable);
            parameters.AddInputParameter("@RegistrationAddress", SqlDbType.Structured, clientVisitTableSet.RegisterAddressDataTable);
            parameters.AddInputParameter("@RegistrationAddressDate", SqlDbType.DateTime, saveData.RegistrationAddressDate);
            parameters.AddInputParameter("@OldPolicyInfo", SqlDbType.Structured, clientVisitTableSet.OldPolicyInfoDataTable);
            parameters.AddInputParameter("@NewPolicyInfo", SqlDbType.Structured, clientVisitTableSet.NewPolicyInfoDataTable);
            parameters.AddInputParameter("@Representative", SqlDbType.Structured, clientVisitTableSet.RepresentativeDataTable);
            parameters.AddInputParameter("@StatusID", SqlDbType.BigInt, saveData.Status);
            parameters.AddInputParameter("@StatusDate", SqlDbType.DateTime, saveData.StatusDate);
            parameters.AddInputParameter("@OldSystemID", SqlDbType.BigInt, saveData.OldSystemId);
            parameters.AddInputParameter("@SaveDate", SqlDbType.DateTime, saveDate ?? DateTime.Now);

            SqlParameter clientVisitID   = parameters.AddInputOutputParameter("@ClientVisitID", SqlDbType.BigInt, saveData.Id);
            SqlParameter clientVersionID = parameters.AddOutputParameter("@NewClientVersionID", SqlDbType.BigInt);
            SqlParameter clientID        = parameters.AddInputOutputParameter("@ClientID", SqlDbType.BigInt, saveData.ClientId);
            SqlParameter VisitGroupId    = parameters.AddInputOutputParameter("@VisitGroupId", SqlDbType.BigInt, saveData.VisitGroupId);


            Execute_StoredProcedure("ClientVisit_Save", parameters);
            ClientVisitSaveResult result = new ClientVisitSaveResult();

            result.ClientID           = (long)clientID.Value;
            result.NewClientVersionID = (long)clientVersionID.Value;
            result.ClientVisitID      = (long)clientVisitID.Value;
            result.VisitGroupId       = (long)VisitGroupId.Value;
            return(result);
        }
Ejemplo n.º 21
0
        public List <ClientVisit.UpdateResultData> UploadMFCClientVisitsExtradition(User user, string zipFilepath)
        {
            List <ClientVisit.UpdateResultData> report = new List <ClientVisit.UpdateResultData>();
            string zipDirectoryName = Path.Combine(ConfiguraionProvider.FileStorageFolder, Path.GetFileNameWithoutExtension(zipFilepath));

            ZipHelper.UnZipFiles(zipFilepath, zipDirectoryName);
            string[] filenames = Directory.GetFiles(zipDirectoryName);
            string   file      = filenames.FirstOrDefault();

            System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
            DataTable          table    = DBFProcessor.GetDataTable(file, string.Format("select * from \"{0}\";", fileInfo.FullName));

            foreach (DataRow row in table.Rows)
            {
                string          unifiedPolicyNumber   = (string)row["ENP"];
                string          temporaryPolicyNumber = (string)row["VSN"];
                DateTime        issueDate             = (DateTime)row["DATE_V"];
                ClientVisitInfo clientVisitInfo       = clientBusinessLogic.ClientVisit_Find(
                    new ClientVisitSearchCriteria()
                {
                    TemporaryPolicyNumber = temporaryPolicyNumber
                }, new List <SortCriteria <ClientVisitSortField> >(), new PageRequest()).Data.FirstOrDefault();

                if (clientVisitInfo != null)
                {
                    ClientVisit          visit = clientBusinessLogic.ClientVisit_GetLastClientVisitInGroup(clientVisitInfo.VisitGroupId);
                    ClientVisit.SaveData data  = ClientVisit.SaveData.BuildSaveData(visit);
                    data.ScenarioId = ClientVisitScenaries.PolicyExtradition.Id;
                    data.Status     = ClientVisitStatuses.PolicyIssuedAndSentToTheFond.Id;
                    data.StatusDate = issueDate;
                    data.IssueDate  = issueDate;
                    data.NewPolicy.UnifiedPolicyNumber = unifiedPolicyNumber;
                    clientBusinessLogic.ClientVisit_Save(user, data, data.IssueDate);
                    report.Add(new ClientVisit.UpdateResultData()
                    {
                        Birthday           = visit.NewClientInfo.Birthday,
                        ClientId           = visit.ClientId,
                        ClientVisitGroupId = visit.VisitGroupId,
                        Firstname          = visit.NewClientInfo.Firstname,
                        Id                  = visit.Id,
                        IsSuccess           = true,
                        Lastname            = visit.NewClientInfo.Lastname,
                        Secondname          = visit.NewClientInfo.Secondname,
                        Sex                 = int.Parse(visit.NewClientInfo.Sex),
                        Status              = ClientVisitStatuses.PolicyIssuedAndSentToTheFond,
                        UnifiedPolicyNumber = unifiedPolicyNumber,
                        Message             = "Успешно"
                    });
                }
                else
                {
                    report.Add(new ClientVisit.UpdateResultData()
                    {
                        IsSuccess           = false,
                        UnifiedPolicyNumber = unifiedPolicyNumber,
                        Message             = "Не найден"
                    });
                }
            }
            return(report);
        }
Ejemplo n.º 22
0
        public List <FundResponse.UploadReportData> UploadSubmitFundResponse(User user, string zipPath)
        {
            List <FundResponse.UploadReportData> report = new List <FundResponse.UploadReportData>();
            string zipDirectoryName = Path.Combine(ConfiguraionProvider.FileStorageFolder, Path.GetFileNameWithoutExtension(zipPath));

            ZipHelper.UnZipFiles(zipPath, zipDirectoryName);
            var responsesToCreate = new List <FundResponse.CreateData>();
            FundResponseCreateDataBuilder builder = new FundResponseCreateDataBuilder();

            foreach (var file in Directory.GetFiles(zipDirectoryName))
            {
                System.IO.FileInfo fInfo     = new System.IO.FileInfo(file);
                DataTable          dataTable = DBFProcessor.GetDataTable(fInfo.FullName, string.Format("select * from \"{0}\";", fInfo.FullName));
                if (fInfo.Name.StartsWith("errp2", StringComparison.InvariantCultureIgnoreCase))
                {
                    dataTable.TableName = Path.GetFileNameWithoutExtension(fInfo.Name);
                    IEnumerable <FundResponse.CreateData> list = builder.BuildList(FundErrorResponse.Name, dataTable);
                    responsesToCreate.AddRange(list);
                }
                if (fInfo.Name.StartsWith("zP2", StringComparison.InvariantCultureIgnoreCase))
                {
                    IEnumerable <FundResponse.CreateData> list = builder.BuildList(GoznakResponse.Name, dataTable);
                    responsesToCreate.AddRange(list);
                }
            }
            DateTime date = DateTime.Now;
            var      responsesByclientVisitId = new Dictionary <long, List <FundResponse.CreateData> >();
            List <FundRequestRecid> recids    =
                FundProcessingDao.Instance.ClientVisitId_GetByFundRequesetRecid(responsesToCreate.Where(item => item.Recid.HasValue).Select(item => item.Recid.Value));
            Dictionary <long, FundRequestRecid> recidsByRecid = recids.ToDictionary(item => item.Recid);

            foreach (FundResponse.CreateData response in responsesToCreate)
            {
                FundRequestRecid recid;
                if (response.Recid.HasValue && recidsByRecid.TryGetValue(response.Recid.Value, out recid))
                {
                    response.ClientVisitId = recid.ClientVisitId;
                }
                if (response.ClientVisitId != 0)
                {
                    if (!responsesByclientVisitId.ContainsKey(response.ClientVisitId))
                    {
                        responsesByclientVisitId.Add(response.ClientVisitId, new List <FundResponse.CreateData>());
                    }
                    responsesByclientVisitId[response.ClientVisitId].Add(response);
                }
                else
                {
                    report.Add(new FundResponse.UploadReportData()
                    {
                        Recid            = response.Recid,
                        Fullname         = response.GetFullname(),
                        ResponseTypeName = response.GetResponseTypeName(),
                        UploadResult     = "Не найдена соответствующая заявка"
                    });
                }
            }
            foreach (var pack in responsesByclientVisitId)
            {
                long        clientVisitId = pack.Key;
                ClientVisit clientVisit   = clientBusinessLogic.ClientVisit_Get(clientVisitId);
                if (clientVisit == null)
                {
                    foreach (var response in pack.Value)
                    {
                        report.Add(new FundResponse.UploadReportData()
                        {
                            Recid            = response.Recid,
                            ClientVisitId    = clientVisitId,
                            ResponseTypeName = response.GetResponseTypeName(),
                            UploadResult     = "Не найдена соответствующая заявка"
                        });
                    }
                    continue;
                }
                ClientVisit lastClientVisit = clientBusinessLogic.ClientVisit_GetLastClientVisitInGroup(clientVisit.VisitGroupId);
                foreach (var response in pack.Value)
                {
                    FundProcessingDao.Instance.FundResponse_Create(response, date);
                }

                foreach (FundErrorResponse.CreateData response in pack.Value.OfType <FundErrorResponse.CreateData>().Cast <FundErrorResponse.CreateData>())
                {
                    if (string.IsNullOrEmpty(response.ErrorCode) && string.IsNullOrEmpty(response.ErrorText))
                    {
                        if (lastClientVisit.Status.Id == ClientVisitStatuses.AnswerPending.Id)
                        {
                            if (lastClientVisit.Scenario.Id == ClientVisitScenaries.PolicyExtradition.Id)
                            {
                                ClientDao.Instance.ClientVisit_SetStatus(user.Id, lastClientVisit.Id, ClientVisitStatuses.PolicyIssuedAndSentToTheFond.Id, true, date);
                                report.Add(AddReportItem(clientVisit, response, lastClientVisit.Id, ClientVisitStatuses.PolicyIssuedAndSentToTheFond, date, "Загружен ответ фонда"));
                            }
                            else
                            {
                                ClientDao.Instance.ClientVisit_SetStatus(user.Id, lastClientVisit.Id, ClientVisitStatuses.Processed.Id, true, date);
                                report.Add(AddReportItem(clientVisit, response, lastClientVisit.Id, ClientVisitStatuses.Processed, date, "Загружен ответ фонда"));
                            }
                        }
                        else if (lastClientVisit.Status.Id == ClientVisitStatuses.FundError.Id)
                        {
                            ClientVisit.SaveData newClientVisitData = new ClientVisit.SaveData(clientVisit);
                            newClientVisitData.Status     = ClientVisitStatuses.Processed.Id;
                            newClientVisitData.StatusDate = date;
                            newClientVisitData.IsActual   = true;
                            var saveResult = clientBusinessLogic.ClientVisit_Save(user, newClientVisitData, date);
                            report.Add(AddReportItem(clientVisit, response, saveResult.ClientVisitID, ClientVisitStatuses.Processed, date, "Загружен ответ фонда"));
                        }
                    }
                    else
                    {
                        if (lastClientVisit.Status.Id == ClientVisitStatuses.Reconciliation.Id ||
                            lastClientVisit.Status.Id == ClientVisitStatuses.AnswerPending.Id)
                        {
                            ClientDao.Instance.ClientVisit_SetStatus(user.Id, lastClientVisit.Id, ClientVisitStatuses.FundError.Id, true, date);
                            ClientVisit.SaveData newClientVisitData = new ClientVisit.SaveData(clientVisit);
                            newClientVisitData.Status     = ClientVisitStatuses.FundError.Id;
                            newClientVisitData.StatusDate = date;
                            newClientVisitData.IsActual   = true;
                            var saveResult = clientBusinessLogic.ClientVisit_Save(user, newClientVisitData, date);
                            report.Add(AddReportItem(clientVisit, response, saveResult.ClientVisitID, ClientVisitStatuses.FundError, date, "Загружен ответ фонда"));
                        }
                        else
                        {
                            report.Add(AddReportItem(clientVisit, response, lastClientVisit.Id, lastClientVisit.Status, date, "Статус не изменен"));
                        }
                    }
                }

                foreach (GoznakResponse.CreateData response in pack.Value.OfType <GoznakResponse.CreateData>().Cast <GoznakResponse.CreateData>())
                {
                    if (lastClientVisit.Status.Id == ClientVisitStatuses.AnswerPending.Id ||
                        lastClientVisit.Status.Id == ClientVisitStatuses.Processed.Id ||
                        lastClientVisit.Status.Id == ClientVisitStatuses.FundError.Id)
                    {
                        ClientDao.Instance.ClientVisit_SetStatus(user.Id, lastClientVisit.Id, ClientVisitStatuses.SentToGoznak.Id, true, date);
                        report.Add(AddReportItem(clientVisit, response, lastClientVisit.Id, ClientVisitStatuses.SentToGoznak, date));
                    }
                    else
                    {
                        report.Add(AddReportItem(clientVisit, response, lastClientVisit.Id, lastClientVisit.Status, date, "Статус не изменен"));
                    }
                }
            }
            return(report);
        }
Ejemplo n.º 23
0
        public List <FundResponse.UploadReportData> UploadFundResponse(User user, string zipPath, bool runScenario)
        {
            List <FundResponse.UploadReportData> report = new List <FundResponse.UploadReportData>();
            string zipDirectoryName = Path.Combine(ConfiguraionProvider.FileStorageFolder, Path.GetFileNameWithoutExtension(zipPath));

            ZipHelper.UnZipFiles(zipPath, zipDirectoryName);
            FundResponseCreateDataBuilder builder = new FundResponseCreateDataBuilder();
            var      responsesToCreate            = GetResponsesFromArchive(builder, zipDirectoryName);
            var      responsesByclientVisitId     = GroupByClientVisitId(report, responsesToCreate);
            DateTime date = DateTime.Now;

            foreach (var pack in responsesByclientVisitId)
            {
                long        clientVisitId = pack.Key;
                ClientVisit clientVisit   = ClientDao.Instance.ClientVisit_Get(clientVisitId);
                if (clientVisit == null)
                {
                    foreach (var response in pack.Value)
                    {
                        report.Add(new FundResponse.UploadReportData()
                        {
                            Recid            = response.Recid,
                            ClientVisitId    = clientVisitId,
                            ResponseTypeName = response.GetResponseTypeName(),
                            UploadResult     = "Не найдена соответствующая заявка"
                        });
                    }
                    continue;
                }
                ClientVisit   lastClientVisitInGroup = ClientDao.Instance.ClientVisit_GetLastClientVisitInGroup(clientVisit.VisitGroupId);
                ReferenceItem lastCurrentStatus      = clientVisit.Status;
                DateTime      lastClientStatusDate   = clientVisit.StatusDate;
                long?         lastClientVisitId      = null;
                if (lastClientVisitInGroup.Status.Id == ClientVisitStatuses.FundError.Id ||
                    lastClientVisitInGroup.Status.Id == ClientVisitStatuses.AnswerPending.Id ||
                    lastClientVisitInGroup.Status.Id == ClientVisitStatuses.Processed.Id)
                {
                    clientBusinessLogic.ClientVisit_SetStatus(user, lastClientVisitInGroup.Id, ClientVisitStatuses.Reconciliation.Id, true);
                    lastCurrentStatus    = ClientVisitStatuses.Reconciliation;
                    lastClientStatusDate = date;
                }
                if (lastClientVisitInGroup.Status.Id == ClientVisitStatuses.SubmitPending.Id)
                {
                    ClientVisit.SaveData newClientVisitData = new ClientVisit.SaveData(lastClientVisitInGroup);
                    newClientVisitData.Status     = ClientVisitStatuses.Reconciliation.Id;
                    lastCurrentStatus             = ClientVisitStatuses.Reconciliation;
                    newClientVisitData.StatusDate = date;
                    lastClientStatusDate          = date;
                    newClientVisitData.IsActual   = true;
                    var saveResult = clientBusinessLogic.ClientVisit_Save(user, newClientVisitData, date);
                    lastClientVisitId = saveResult.ClientVisitID;
                }
                foreach (var response in pack.Value)
                {
                    FundProcessingDao.Instance.FundResponse_Create(response, date);
                    report.Add(AddReportItem(clientVisit, response, lastClientVisitId, lastCurrentStatus, lastClientStatusDate));
                }
                if (runScenario)
                {
                    clientVisit = ClientDao.Instance.ClientVisit_GetLastClientVisitInGroup(clientVisit.VisitGroupId);
                    ScenarioResolver     resolver         = new ScenarioResolver(clientVisit, pack.Value.OfType <ReconciliationFundResponse.CreateData>().ToList());
                    ReferenceItem        resolvedScenario = resolver.GetResolvedScenario();
                    ClientVisit.SaveData data             = ClientVisit.SaveData.BuildSaveData(clientVisit);
                    if (resolvedScenario != null)
                    {
                        data.ScenarioId = resolvedScenario.Id;
                        data.FundResponseApplyingMessage = string.Format("Сценарий изменён с {0} на {1}",
                                                                         clientVisit.Scenario != null ? clientVisit.Scenario.Code : string.Empty, resolvedScenario.Code);
                        data.IsReadyToFundSubmitRequest = true;
                        ClientVisitOldDataBuilder oldDataBuilder = new ClientVisitOldDataBuilder(data,
                                                                                                 pack.Value.OfType <IReconciliationFundResponse>().ToList());
                        ClientVisit firstClientVisit             = clientBusinessLogic.ClientVisit_GetFirstClientVisitInGroup(clientVisit.VisitGroupId);
                        ClientVisitNewDataBuilder newDataBuilder = new ClientVisitNewDataBuilder(data, firstClientVisit,
                                                                                                 pack.Value.OfType <IReconciliationFundResponse>().ToList());
                        data = oldDataBuilder.Process();
                        data = newDataBuilder.Process();
                    }
                    clientBusinessLogic.ClientVisit_Save(user, data);
                }
            }
            return(report);
        }
Ejemplo n.º 24
0
        private static void Process(ClientVisit.SaveData clientVisit)
        {
            bool isSuccess = false;

            try
            {
                ClientVisitSearchCriteria clientVisitSC = new ClientVisitSearchCriteria();
                clientVisitSC.Firstname  = clientVisit.NewClientInfo.Firstname;
                clientVisitSC.Secondname = clientVisit.NewClientInfo.Secondname;
                clientVisitSC.Lastname   = clientVisit.NewClientInfo.Lastname;
                clientVisitSC.Birthday   = clientVisit.NewClientInfo.Birthday;

                DataPage <ClientVisitInfo> foundClients = new DataPage <ClientVisitInfo>();
                if (!string.IsNullOrEmpty(clientVisit.NewClientInfo.SNILS))
                {
                    clientVisitSC.SNILS = clientVisit.NewClientInfo.SNILS;
                    foundClients        = ClientDao.Instance.ClientVisit_Find(
                        clientVisitSC,
                        new List <SortCriteria <ClientVisitSortField> >(),
                        new PageRequest()
                    {
                        PageNumber = 1, PageSize = 10
                    });
                    clientVisitSC.SNILS = null;
                }

                if (clientVisit.NewDocument.DocumentTypeId.HasValue && !string.IsNullOrEmpty(clientVisit.NewDocument.Number))
                {
                    clientVisitSC.DocumentTypeId = clientVisit.NewDocument.DocumentTypeId;
                    clientVisitSC.DocumentSeries = clientVisit.NewDocument.Series;
                    clientVisitSC.DocumentNumber = clientVisit.NewDocument.Number;
                    foundClients = ClientDao.Instance.ClientVisit_Find(clientVisitSC, new List <SortCriteria <ClientVisitSortField> >(), new PageRequest()
                    {
                        PageNumber = 1, PageSize = 10
                    });
                    clientVisitSC.DocumentTypeId = null;
                    clientVisitSC.DocumentSeries = null;
                    clientVisitSC.DocumentNumber = null;
                }

                if (!string.IsNullOrEmpty(clientVisit.NewPolicy.Series) && !string.IsNullOrEmpty(clientVisit.NewPolicy.Number))
                {
                    clientVisitSC.PolicySeries = clientVisit.NewPolicy.Series;
                    clientVisitSC.PolicyNumber = clientVisit.NewPolicy.Number;
                    foundClients = ClientDao.Instance.ClientVisit_Find(clientVisitSC, new List <SortCriteria <ClientVisitSortField> >(), new PageRequest()
                    {
                        PageNumber = 1, PageSize = 10
                    });
                    clientVisitSC.PolicySeries = null;
                    clientVisitSC.PolicyNumber = null;
                }

                if (!string.IsNullOrEmpty(clientVisit.NewPolicy.UnifiedPolicyNumber))
                {
                    clientVisitSC.UnifiedPolicyNumber = clientVisit.NewPolicy.UnifiedPolicyNumber;
                    foundClients = ClientDao.Instance.ClientVisit_Find(clientVisitSC, new List <SortCriteria <ClientVisitSortField> >(), new PageRequest()
                    {
                        PageNumber = 1, PageSize = 10
                    });
                    clientVisitSC.UnifiedPolicyNumber = null;
                }

                if (foundClients.Count != 0)
                {
                    clientVisit.ClientId = foundClients.OrderBy(item => item.StatusDate).LastOrDefault().ClientId;
                }

                if (clientVisit.Status == 0)
                {
                    clientVisit.Status = 12;
                }

                ClientVisitSaveResult result = ClientDao.Instance.ClientVisit_Save(clientVisit, 1, clientVisit.StatusDate ?? new DateTime(1900, 1, 1));
                ClientDao.Instance.ClientVisit_SetStatus(1, result.ClientVisitID, clientVisit.Status.Value, true, clientVisit.StatusDate ?? new DateTime(1900, 1, 1));
                isSuccess = true;
                ClientDataDao.Instance.SetProcessed(clientVisit.UniqueId.Value, isSuccess);
            }
            catch (SqlTypeException ex)
            {
                isSuccess = false;
                ClientDataDao.Instance.SetProcessed(clientVisit.UniqueId.Value, isSuccess);
            }
            catch (SqlException ex)
            {
                if (ex.Message.Contains("The data for table-valued parameter \"@Representative\""))
                {
                    isSuccess = false;
                    ClientDataDao.Instance.SetProcessed(clientVisit.UniqueId.Value, isSuccess);
                }
                else
                {
                    throw ex;
                }
            }
            catch
            {
                isSuccess = false;
                ClientDataDao.Instance.SetProcessed(clientVisit.UniqueId.Value, isSuccess);
            }
            Console.WriteLine(string.Format("   {0} {1} {2} {3} {4}", clientVisit.OldSystemId.ToString(),
                                            clientVisit.NewClientInfo.Lastname ?? string.Empty,
                                            clientVisit.NewClientInfo.Firstname ?? string.Empty,
                                            clientVisit.NewClientInfo.Secondname ?? string.Empty,
                                            isSuccess.ToString()));
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Method to update visit group and create a new client visit for fund
        /// </summary>
        /// <param name="dbfFilePath">DBF file that contains information to update</param>
        /// <returns>Result of updating</returns>
        public List <ClientVisit.UpdateResultData> ClientVisit_UpdateFundDbf(User user, string dbfFilePath)
        {
            BSOBusinessLogic bsoBusinessLogic = new BSOBusinessLogic();
            List <ClientVisit.UpdateData>       dataToUpdate = ClientVisitReportDao.Instance.GetUpdateDataFromDbf(dbfFilePath);
            List <ClientVisit.UpdateResultData> results      = new List <ClientVisit.UpdateResultData>();

            foreach (var updateClientVisitItem in dataToUpdate)
            {
                var clientVisits = FindClientVisitsToUpdate(updateClientVisitItem);

                ClientVisitInfo lastClientVisitInfo = clientVisits.OrderBy(v => v.Id).LastOrDefault();

                if (lastClientVisitInfo != null && (lastClientVisitInfo.Status.Id == ClientVisitStatuses.AnswerPending.Id ||
                                                    lastClientVisitInfo.Status.Id == ClientVisitStatuses.AnswerPending.Id ||
                                                    lastClientVisitInfo.Status.Id == ClientVisitStatuses.SubmitPending.Id ||
                                                    lastClientVisitInfo.Status.Id == ClientVisitStatuses.SentToGoznak.Id ||
                                                    lastClientVisitInfo.Status.Id == ClientVisitStatuses.Processed.Id ||
                                                    lastClientVisitInfo.Status.Id == ClientVisitStatuses.Comment.Id))
                {
                    ClientVisit visit = ClientVisit_Get(lastClientVisitInfo.Id);

                    // create new clientVisit to update policy information in the fund
                    if (visit.Status.Id != ClientVisitStatuses.PolicyReadyForClient.Id)
                    {
                        ClientVisit.SaveData  data           = BuildUpdatedClientVisitSaveData(updateClientVisitItem, visit);
                        ClientVisitSaveResult updatingResult = ClientVisit_Save(user, data);

                        //если bso будет найден - ему меняем статус на "Выдан клиенту"
                        BSO bso = new BSO();
                        bso = bsoBusinessLogic.BSO_GetByNumber(updateClientVisitItem.TemporaryPolicyNumber);
                        if (bso != null)
                        {
                            if (bso.Status.Id == (long)ListBSOStatusID.OnDelivery || bso.Status.Id == (long)ListBSOStatusID.OnStorage)
                            {
                                bso.Status.Id       = (long)ListBSOStatusID.OnClient;
                                bso.UserId          = user.Id;
                                bso.DeliveryPointId = data.DeliveryPointId == null ? bso.DeliveryPointId : data.DeliveryPointId; //Если точка пустая - оставляем Точку, кот. была в БСО
                                bso.StatusDate      = data.TemporaryPolicyDate == null ? data.StatusDate : data.TemporaryPolicyDate;
                                bso.Comment         = string.Format("Изменение статуса при загрузке DBF (Загрузить DBF из фонда)");
                                bso.VisitGroupId    = updatingResult.VisitGroupId;
                            }
                            else
                            {
                                //если bso уже выдан клиенту - то дальнейшие действия с БСО не имеют значения
                                bso = null;
                            }
                        }

                        // set status for created client visit
                        ClientVisit_SetStatus(user, updatingResult.ClientVisitID, ClientVisitStatuses.PolicyReadyForClient.Id, true);
                        if (bso != null)
                        {
                            bsoBusinessLogic.BSO_Save(new BSO.SaveData(bso));
                        }
                        results.Add(new ClientVisit.UpdateResultData(updateClientVisitItem, true, "Успешно", visit)
                        {
                            Status = ClientVisitStatuses.PolicyReadyForClient
                        });
                    }
                    else
                    {
                        results.Add(new ClientVisit.UpdateResultData(updateClientVisitItem, true, "Заявка на выдачу была создана ранее", visit));
                    }
                }
                else
                {
                    results.Add(new ClientVisit.UpdateResultData(updateClientVisitItem, true, "Заявка в подходящем статусе не найдена"));
                }
            }
            return(results);
        }
Ejemplo n.º 26
0
 /// <summary>
 /// Set default policy end date by client category
 /// </summary>
 private void SetGoznakType(ClientVisit.SaveData saveData)
 {
     if (!saveData.GOZNAKTypeId.HasValue)
     {
         if (string.IsNullOrEmpty(saveData.TemporaryPolicyNumber))
         {
             if (saveData.ScenarioId == ClientVisitScenaries.ChangeDocument.Id ||
                 saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithoutFIO.Id ||
                 saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithoutFIO.Id)
             {
                 saveData.GOZNAKTypeId = GoznakTypes.DontSent.Id;
             }
         }
         else
         {
             if (saveData.CarrierId == Carriers.UEK.Id)
             {
                 if (saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.RequestENPSameSMOChangeFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.LostENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.FirstRequestENP.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithFIO.Id)
                 {
                     saveData.GOZNAKTypeId = GoznakTypes.DontSent.Id;
                 }
             }
             if (saveData.CarrierId == Carriers.PaperPolicy.Id)
             {
                 if (saveData.ScenarioId == ClientVisitScenaries.FirstRequestENP.Id)
                 {
                     saveData.GOZNAKTypeId = GoznakTypes.PrintPolicyFirstTime.Id;
                 }
                 if (saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.RequestENPSameSMOChangeFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.LostENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithFIO.Id)
                 {
                     saveData.GOZNAKTypeId = GoznakTypes.PrintPolicyRepeatedly.Id;
                 }
             }
             if (saveData.CarrierId == Carriers.DigitalPolicy.Id)
             {
                 if (saveData.ScenarioId == ClientVisitScenaries.FirstRequestENP.Id)
                 {
                     saveData.GOZNAKTypeId = GoznakTypes.DigitalPolicyFirstTime.Id;
                 }
                 if (saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.RequestENPSameSMOChangeFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.LostENPWithoutFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationMoscowENPWithFIO.Id ||
                     saveData.ScenarioId == ClientVisitScenaries.ReregistrationRegionalENPWithFIO.Id)
                 {
                     saveData.GOZNAKTypeId = GoznakTypes.DigitalPolicyRepeatedly.Id;
                 }
             }
         }
     }
 }