/// <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); }
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); } }
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); }
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); }
/// <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); }
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); }
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); }
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); }
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); }
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; } } }
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); }
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); } }
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; } } } }
/// <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); } } }
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); }
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); }
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); } }
/// <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); } } }
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); }
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); }
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); }
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); }
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())); }
/// <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); }
/// <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; } } } } }