private void UploadOutboundFiles(IEnumerable <string> sourceFiles, string uploadMediaLocation, long typeId) { foreach (var sourceFile in sourceFiles) { try { var fileName = Path.GetFileName(sourceFile); var destinationFile = uploadMediaLocation + fileName; System.IO.File.Move(sourceFile, destinationFile); var fileInfo = new FileInfo(destinationFile); var file = _fileRepository.Save(new File { Path = fileInfo.Name, FileSize = fileInfo.Length, Type = FileType.Csv, UploadedBy = new OrganizationRoleUser(1), UploadedOn = DateTime.Now }); _outboundUploadRepository.Save(new OutboundUpload { FileId = file.Id, TypeId = typeId, StatusId = (long)OutboundUploadStatus.Pending, UploadTime = DateTime.Now }); } catch (Exception exception) { _logger.Info("some exception occured while Moving File type " + ((OutboundUploadType)typeId).GetDescription()); _logger.Info("message " + exception.Message); _logger.Info("stack Trace " + exception.StackTrace); } } }
public void PollForDiagnosisReportParsing() { var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.DiagnosisReport); if (outboundUploads == null || !outboundUploads.Any()) { _logger.Info("No new files uploaded."); return; } var accountIds = _accountIds.Split(','); foreach (var accountId in accountIds) { var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId)); var fileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "DiagnosisReport"); var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "DiagnosisReportArchived"); foreach (var outboundUpload in outboundUploads) { try { outboundUpload.StatusId = (long)OutboundUploadStatus.Parsing; outboundUpload.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(outboundUpload); var file = _fileRepository.GetById(outboundUpload.FileId); if (!System.IO.File.Exists(fileLocation.PhysicalPath + file.Path)) { _logger.Info("File not found : " + fileLocation.PhysicalPath + file.Path); continue; } _logger.Info("Importing File : " + file.Path); var dataTable = _csvReader.CsvToDataTable(fileLocation.PhysicalPath + file.Path, true); if (dataTable == null || dataTable.Rows.IsNullOrEmpty()) { _logger.Info("No rows found."); outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = (long)OutboundUploadStatus.Parsed; _outboundUploadRepository.Save(outboundUpload); continue; } var successRows = 0; foreach (DataRow row in dataTable.Rows) { var model = GetPatientDiagnosisModel(row); try { var customerId = Convert.ToInt64(model.CustomerId); var eventId = Convert.ToInt64(model.EventId); var eventCustomer = _eventCustomerRepository.Get(eventId, customerId); if (eventCustomer == null) { _logger.Info("No EventCustomer found for CustomerId : " + model.CustomerId + " and EventId : " + model.EventId); continue; } var eventCustomerDiagnosis = _diagnosisReportFactory.Create(model, eventCustomer.Id); _eventCustomerDiagnosisRepository.Save(eventCustomerDiagnosis); successRows++; } catch (Exception ex) { _logger.Error(string.Format("While Parsing Diagnosis Report for CustomerId : {0} and EventId : {1} and Icd Code : {2}", model.CustomerId, model.EventId, model.Icd)); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); } } outboundUpload.SuccessUploadCount = successRows; outboundUpload.FailedUploadCount = dataTable.Rows.Count - successRows; outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); if (successRows > 1) { System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { _logger.Error("While Parsing File."); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); } } } }
public void Parse() { try { _logger.Info("Running Loinc Crosswalk"); if (!DirectoryOperationsHelper.CreateDirectoryIfNotExist(_settings.LoincCrosswalkPath)) { _logger.Info(string.Format("Folder could not be created. Please check path: {0} ", _settings.LoincCrosswalkPath)); return; } var loincMediaLocation = _mediaRepository.GetLoincMediaLocation(); var archiveLocation = _mediaRepository.GetLoincArchiveMediaLocation(); var loincCrosswalkfiles = DirectoryOperationsHelper.GetFiles(_settings.LoincCrosswalkPath, "*.csv"); if (loincCrosswalkfiles.IsNullOrEmpty()) { _logger.Info(string.Format("No csv file found at following location {0}", _settings.LoincCrosswalkPath)); } else { UploadLoincFiles(loincCrosswalkfiles, loincMediaLocation.PhysicalPath, (long)OutboundUploadType.LoincCrosswalk); } var uploadedFiles = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.LoincCrosswalk); if (uploadedFiles.IsNullOrEmpty()) { _logger.Info("No new files uploaded for Loinc Crosswalk."); return; } foreach (var uploadedFile in uploadedFiles) { try { var file = GetFile(uploadedFile.FileId); if (!System.IO.File.Exists(loincMediaLocation.PhysicalPath + file.Path)) { _logger.Info("File not found : " + loincMediaLocation.PhysicalPath + file.Path); continue; } uploadedFile.StatusId = (long)OutboundUploadStatus.Parsing; uploadedFile.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(uploadedFile); _logger.Info("Importing File : " + file.Path); var dataTable = _csvReader.CsvToDataTable(loincMediaLocation.PhysicalPath + file.Path, true, ","); var csvStringBuilder = new StringBuilder(); csvStringBuilder.Append(LogHeader + Environment.NewLine); long totalRows = 0, successRows = 0; if (dataTable.Rows.Count == 0) { _logger.Info("No records found for file : " + loincMediaLocation.PhysicalPath + file.Path); continue; } foreach (DataRow row in dataTable.Rows) { totalRows++; var model = GetLoincCrosswalk(row); var errorRow = model.LoincNumber + "," + model.Component + "," + model.System + "," + model.MethodType + "," + model.VersionLastChanged + "," + model.DefinitionDescription + "," + model.Formula + model.Species + model.ExampleAnswers + "," + model.SurveyQuestionText + "," + model.SurveyQuestionSource + "," + model.UnitsRequired + "," + model.SubmittedUnits + "," + model.CdiscCommonTests + "," + model.Hl7FieldSubfieldId + model.ExternalCopyrightNotice + model.ExampleUnits + model.LongCommonName; try { if (!model.IsEmpty()) { model.Year = DateTime.Today.Year; model.DateCreated = DateTime.Now; model.UploadId = uploadedFile.Id; } _loincCrosswalkRepository.Save(model); successRows++; } catch (Exception ex) { _logger.Error(string.Format("Some Error Occurred Message: {0} \n stack Trace: {1}", ex.Message, ex.StackTrace)); csvStringBuilder.Append(errorRow + "," + ex.Message + Environment.NewLine); } } if (successRows < totalRows) { var logFileName = file.Path + "_Log.csv"; var logFile = SaveLogFile(_settings.LoincCrosswalkPath + logFileName, csvStringBuilder); uploadedFile.LogFileId = logFile.Id; } uploadedFile.SuccessUploadCount = successRows; uploadedFile.FailedUploadCount = totalRows - successRows; uploadedFile.ParseEndTime = DateTime.Now; uploadedFile.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(uploadedFile); if (successRows > 1) { System.IO.File.Move(loincMediaLocation.PhysicalPath + file.Path, archiveLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { uploadedFile.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(uploadedFile); _logger.Error(string.Format("while Parsing File")); _logger.Error("Ex Message" + ex.Message); _logger.Error("Ex Stack Trace " + ex.StackTrace); } } } catch (Exception ex) { _logger.Error("Error while Parsing Loinc Crosswalk Files."); _logger.Error(ex); } }
public void Parse() { try { _logger.Info("Running Loinc Lab Data"); if (!DirectoryOperationsHelper.CreateDirectoryIfNotExist(_settings.LoincLabDataPath)) { _logger.Info(string.Format("Folder could not be created. Please check path: {0} ", _settings.LoincLabDataPath)); return; } var loincMediaLocation = _mediaRepository.GetLoincMediaLocation(); var archiveLocation = _mediaRepository.GetLoincArchiveMediaLocation(); var loincLabfiles = DirectoryOperationsHelper.GetFiles(_settings.LoincLabDataPath, "*.csv"); if (loincLabfiles.IsNullOrEmpty()) { _logger.Info(string.Format("No csv file found at following location {0}", _settings.LoincLabDataPath)); } else { UploadLoincFiles(loincLabfiles, loincMediaLocation.PhysicalPath, (long)OutboundUploadType.LoincLabData); } var uploadedFiles = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.LoincLabData); if (uploadedFiles.IsNullOrEmpty()) { _logger.Info("No new files uploaded for Loinc Lab Data."); return; } foreach (var uploadedFile in uploadedFiles) { try { var file = GetFile(uploadedFile.FileId); if (!System.IO.File.Exists(loincMediaLocation.PhysicalPath + file.Path)) { _logger.Info("File not found : " + loincMediaLocation.PhysicalPath + file.Path); continue; } uploadedFile.StatusId = (long)OutboundUploadStatus.Parsing; uploadedFile.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(uploadedFile); _logger.Info("Importing File : " + file.Path); var loincLabData = _csvReader.ReadWithTextQualifierLargeData(loincMediaLocation.PhysicalPath + file.Path); var csvStringBuilder = new StringBuilder(); csvStringBuilder.Append(LogHeader + Environment.NewLine); long totalRows = 0, successRows = 0; foreach (var dataTable in loincLabData) { if (dataTable.Rows.Count == 0) { _logger.Info("No records found for file : " + loincMediaLocation.PhysicalPath + file.Path); continue; } foreach (DataRow row in dataTable.Rows) { totalRows++; LoincLabDataEditModel model = null; model = GetLoincLabData(row); var errorRow = model.MemberId + "," + model.Gmpi + "," + model.Loinc + "," + model.LoincDescription + "," + model.ResultValue + "," + model.ResultUnits + "," + model.RefRange + "," + model.DoS; try { if (model != null && !model.IsEmpty()) { var domain = new LoincLabData { MemberId = model.MemberId, Gmpi = model.Gmpi, Loinc = model.Loinc, LoincDescription = model.LoincDescription, ResultValue = model.ResultValue, ResultUnits = model.ResultUnits, RefRange = model.RefRange, DateOfService = GetRowDateValue(model.DoS), Year = DateTime.Today.Year, DateCreated = DateTime.Now, UploadId = uploadedFile.Id, }; _loincLabDataRepository.Save(domain); } successRows++; } catch (Exception ex) { _logger.Error(string.Format("Some Error Occurred Message: {0} \n stack Trace: {1}", ex.Message, ex.StackTrace)); csvStringBuilder.Append(errorRow + "," + ex.Message + Environment.NewLine); } } } if (successRows < totalRows) { var logFileName = file.Path + "_Log.csv"; var logFile = SaveLogFile(_settings.LoincLabDataPath + logFileName, csvStringBuilder); uploadedFile.LogFileId = logFile.Id; } uploadedFile.SuccessUploadCount = successRows; uploadedFile.FailedUploadCount = totalRows - successRows; uploadedFile.ParseEndTime = DateTime.Now; uploadedFile.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(uploadedFile); if (successRows > 1) { System.IO.File.Move(loincMediaLocation.PhysicalPath + file.Path, archiveLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { uploadedFile.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(uploadedFile); _logger.Error(string.Format("while Parsing File")); _logger.Error("Ex Message" + ex.Message); _logger.Error("Ex Stack Trace " + ex.StackTrace); } } } catch (Exception ex) { _logger.Error("Error while Parsing Loinc Lab Data Files."); _logger.Error(ex); } }
public void PollForPatientDetailReportParsing() { var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.PatientDetail); if (outboundUploads == null || !outboundUploads.Any()) { _logger.Info("No new files uploaded."); return; } var accountIds = _accountIds.Split(','); foreach (var accountId in accountIds) { var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId)); var fileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "PatientDetail"); var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "PatientDetailArchived"); foreach (var outboundUpload in outboundUploads) { try { outboundUpload.StatusId = (long)OutboundUploadStatus.Parsing; outboundUpload.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(outboundUpload); var file = _fileRepository.GetById(outboundUpload.FileId); if (!System.IO.File.Exists(fileLocation.PhysicalPath + file.Path)) { _logger.Info("File not found : " + fileLocation.PhysicalPath + file.Path); continue; } _logger.Info("Importing File : " + file.Path); DataTable table = _csvReader.ReadWithTextQualifier(fileLocation.PhysicalPath + file.Path); if (table.Rows.Count <= 0) { _logger.Info("No rows found."); outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = (long)OutboundUploadStatus.Parsed; _outboundUploadRepository.Save(outboundUpload); continue; } var successRows = 0; foreach (DataRow row in table.Rows) { var model = GetPatientDetailModel(row); try { if (string.IsNullOrEmpty(model.MedicalRecordNo)) { _logger.Info("MedicalRecordNo empty for MemberId : " + model.MaPlanMemberId); continue; } var medicalRecordNo = Convert.ToInt64(model.MedicalRecordNo); var eventCustomer = _eventCustomerRepository.GetByCustomerIdAndEventDate(medicalRecordNo, model.AwvDate); if (eventCustomer == null) { _logger.Info("Event Customer not found for Medical Record No : " + model.MedicalRecordNo + " and Awv Date : " + model.AwvDate); continue; } eventCustomer.PatientDetailId = model.Id; _eventCustomerRepository.Save(eventCustomer); successRows++; } catch (Exception ex) { _logger.Error("While Parsing Patient Detail for Medical Record No : " + model.MedicalRecordNo); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); } } outboundUpload.SuccessUploadCount = successRows; outboundUpload.FailedUploadCount = table.Rows.Count - successRows; outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); if (successRows > 1) { System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { _logger.Error("While Parsing File."); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); } } } }
public void PollForOutboundCareCoding() { var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.CareCodingOutbound); if (outboundUploads == null || !outboundUploads.Any()) { _logger.Info("No new files uploaded."); return; } var accountIds = _accountIds.Split(','); foreach (var accountId in accountIds) { var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId)); var fileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "CareCoding"); var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "CareCodingArchived"); foreach (var outboundUpload in outboundUploads) { try { outboundUpload.StatusId = (long)OutboundUploadStatus.Parsing; outboundUpload.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(outboundUpload); var file = _fileRepository.GetById(outboundUpload.FileId); _logger.Info("Importing File : " + file.Path); DataTable table = _pipeDelimitedReportHelper.Read(fileLocation.PhysicalPath + file.Path); if (table.Rows.Count <= 0) { _logger.Info("No rows found."); outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = (long)OutboundUploadStatus.Parsed; _outboundUploadRepository.Save(outboundUpload); continue; } var csvStringBuilder = new StringBuilder(); csvStringBuilder.Append(LogHeader + Environment.NewLine); var successRows = 0; foreach (DataRow row in table.Rows) { var model = GetCareCodingOutboundModel(row); var errorRow = model.TenantId + "|" + model.ClientId + "|" + model.CampaignId + "|" + model.IndividualIdNumber + "|" + model.ContractNumber + "|" + model.ContractPersonNumber + "|" + model.ConsumerId; try { var chaseOutbound = _chaseOutboundRepository.GetByIndividualIdNumber(model.IndividualIdNumber, model.ConsumerId); if (chaseOutbound == null) { csvStringBuilder.Append(errorRow + "|" + "Could not find a Customer with Individual_Id_Number : " + model.IndividualIdNumber + " and Consumer_Id : " + model.ConsumerId); continue; } /*var existingCareCoding = _careCodingOutboundRepository.GetByCustomerId(chaseOutbound.CustomerId);*/ var careCodingOutbound = _careCodingOutboundFactory.Create(model); careCodingOutbound.CustomerId = chaseOutbound.CustomerId; if (!string.IsNullOrEmpty(model.MedicalCodeServiceDate)) { try { careCodingOutbound.MedicalCodeServiceDate = Convert.ToDateTime(model.MedicalCodeServiceDate); } catch (Exception) { csvStringBuilder.Append(errorRow + "|" + "Medical_Code_Service_Date is not in correct format. Please Provide in DD/MM/YYYY" + Environment.NewLine); continue; } } _careCodingOutboundRepository.Save(careCodingOutbound); successRows++; } catch (Exception ex) { _logger.Error("While Parsing Care Coding"); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine); } } if (successRows < table.Rows.Count) { var logFileName = _pipeDelimitedReportHelper.GetReportName(ReportType.Exception); var logFile = SaveLogFile(fileLocation.PhysicalPath + logFileName + ".txt", csvStringBuilder); outboundUpload.LogFileId = logFile.Id; } outboundUpload.SuccessUploadCount = successRows; outboundUpload.FailedUploadCount = table.Rows.Count - successRows; outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); if (successRows > 1) { System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { _logger.Error("While Parsing File "); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Tracke: " + ex.StackTrace); outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); } } } }
public void PollForOutboundChase() { var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.ChaseOutbound); if (outboundUploads == null || !outboundUploads.Any()) { _logger.Info("No new files uploaded."); return; } var accountIds = _accountIds.Split(','); //var activityTypes = _activityTypeRepository.GetAll(); foreach (var accountId in accountIds) { var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId)); var fileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "Chase"); var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "ChaseArchived"); foreach (var outboundUpload in outboundUploads) { try { var file = GetFile(outboundUpload.FileId); if (!System.IO.File.Exists(fileLocation.PhysicalPath + file.Path)) { _logger.Info("File not found : " + fileLocation.PhysicalPath + file.Path); continue; } _logger.Info("Importing File : " + file.Path); outboundUpload.StatusId = (long)OutboundUploadStatus.Parsing; outboundUpload.ParseStartTime = DateTime.Now; _outboundUploadRepository.Save(outboundUpload); DataTable table = _pipeDelimitedReportHelper.Read(fileLocation.PhysicalPath + file.Path); if (table.Rows.Count <= 0) { _logger.Info("No rows found."); outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = (long)OutboundUploadStatus.Parsed; _outboundUploadRepository.Save(outboundUpload); continue; } var csvStringBuilder = new StringBuilder(); csvStringBuilder.Append(LogHeader + Environment.NewLine); var languages = _languageRepository.GetAll(); var labs = _labRepository.GetAll(); var successRows = 0; foreach (DataRow row in table.Rows) { var model = GetChaseOutboundModel(row); var errorRow = model.TenantId + "|" + model.ClientId + "|" + model.CampaignId + "|" + model.IndividualId + "|" + model.ContractNumber + "|" + model.ContractPersonNumber + "|" + model.ConsumerId; try { if (!string.IsNullOrEmpty(model.HomeAddressState)) { try { var state = _stateRepository.GetStatebyCode(model.HomeAddressState) ?? _stateRepository.GetState(model.HomeAddressState); if (state != null) { model.HomeAddressState = state.Name; } else { csvStringBuilder.Append(errorRow + "|" + "Invalid Home_Addr_State" + Environment.NewLine); continue; } } catch (Exception ex) { _logger.Error("Error importing data."); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine); continue; } } if (!string.IsNullOrEmpty(model.AddressState)) { try { var state = _stateRepository.GetStatebyCode(model.AddressState) ?? _stateRepository.GetState(model.AddressState); if (state != null) { model.AddressState = state.Name; } else { csvStringBuilder.Append(errorRow + "|" + "Invalid Addr_State" + Environment.NewLine); continue; } } catch (Exception ex) { _logger.Error("Error importing data."); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine); continue; } } if (!string.IsNullOrEmpty(model.ProviderOfRecordAddressState)) { try { var state = _stateRepository.GetStatebyCode(model.ProviderOfRecordAddressState) ?? _stateRepository.GetState(model.ProviderOfRecordAddressState); if (state != null) { model.ProviderOfRecordAddressState = state.Name; } else { csvStringBuilder.Append(errorRow + "|" + "Invalid Provider_Addr_State" + Environment.NewLine); continue; } } catch (Exception ex) { _logger.Error("Error importing data."); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine); continue; } } var chaseOutbound = _chaseOutboundFactory.Create(model); var corporateCustomerEditModel = _chaseOutboundFactory.CreateCorporateCustomerEditModel(model); var createdBy = _organizationRoleUserRepository.GetOrganizationRoleUser(1); StringBuilder sb = new StringBuilder(); //var activityType = activityTypes.FirstOrDefault(x => x.Alias == corporateCustomerEditModel.Activity); bool isNewCustomer = false; DateTime?dob = null; if (!string.IsNullOrEmpty(corporateCustomerEditModel.Dob)) { try { dob = Convert.ToDateTime(corporateCustomerEditModel.Dob); } catch (Exception ex) { throw new Exception("DOB is not in correct format. Please Provide in MM/DD/YYYY", ex); } } var customer = _customerRepository.GetCustomerForCorporate(corporateCustomerEditModel.FirstName, corporateCustomerEditModel.MiddleName, corporateCustomerEditModel.LastName, corporateCustomerEditModel.Email, PhoneNumber.ToNumber(corporateCustomerEditModel.PhoneHome), PhoneNumber.ToNumber(corporateCustomerEditModel.PhoneCell), dob, account.Tag, sb); var updatedCustomer = _customerRegistrationService.RegisterCorporateCustomer(customer, corporateCustomerEditModel, account.Tag, createdBy, languages, labs, sb, (long)UploadActivityType.BothMailAndCall, null, out isNewCustomer); chaseOutbound.CustomerId = updatedCustomer.CustomerId; var address = new Address(model.AddressLine1, model.AddressLine2, model.AddressCity, model.AddressState, model.AddressZipCode, "USA"); address = _addressService.SaveAfterSanitizing(address); if (address.Id > 0) { _customerRepository.UpdateBillingAddress(updatedCustomer.CustomerId, address.Id); } var customTags = model.CustomTags.Split(','); if (customTags != null && customTags.Any() && updatedCustomer != null) { foreach (var customTag in customTags) { _corporateCustomerCustomTagService.Save(new CorporateCustomerCustomTag { CustomerId = updatedCustomer.CustomerId, IsActive = true, Tag = customTag, DataRecorderMetaData = new DataRecorderMetaData(new OrganizationRoleUser(createdBy.Id), DateTime.Now, null) }); } } if (!string.IsNullOrEmpty(model.RelationshipCode) || !string.IsNullOrEmpty(model.RelationshipDescription)) { var relationship = GetRelationship(model.RelationshipCode, model.RelationshipDescription); chaseOutbound.RelationshipId = relationship.Id; } chaseOutbound = _chaseOutboundRepository.Save(chaseOutbound); // _chaseProductRepository.DeleteByCustomerId(chaseOutbound.CustomerId); if (!string.IsNullOrEmpty(model.ProductLevel1)) { SaveChaseProduct(model.ProductLevel1, 1, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ProductLevel2)) { SaveChaseProduct(model.ProductLevel2, 2, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ProductLevel3)) { SaveChaseProduct(model.ProductLevel3, 3, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ProductLevel4)) { SaveChaseProduct(model.ProductLevel4, 4, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ProductLevel5)) { SaveChaseProduct(model.ProductLevel5, 5, chaseOutbound.CustomerId, chaseOutbound.Id); } // _chaseChannelLevelRepository.DeleteByCustomerId(chaseOutbound.CustomerId); if (!string.IsNullOrEmpty(model.ChannelLevel2)) { SaveChaseChannel(model.ChannelLevel2, 2, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ChannelLevel3)) { SaveChaseChannel(model.ChannelLevel3, 3, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.GroupName) || !string.IsNullOrEmpty(model.GroupNumber) || !string.IsNullOrEmpty(model.GroupDivision)) { var chaseGroup = GetChaseGroup(model.GroupName, model.GroupNumber, model.GroupDivision); chaseOutbound.ChaseGroupId = chaseGroup.Id; } if (string.IsNullOrEmpty(model.CampaignId) || string.IsNullOrEmpty(model.CampaignName)) { _logger.Info("Campaign Id/Name missing. Incomplete Data"); /*csvStringBuilder.Append(errorRow + "|" + "Campaign Id/Name missing. Incomplete Data." + Environment.NewLine); * continue;*/ } else { SaveCampaign(model, chaseOutbound.CustomerId, chaseOutbound.Id); } if (!string.IsNullOrEmpty(model.ForecastedOutreachDate)) { try { chaseOutbound.ForecastedOutreachDate = Convert.ToDateTime(model.ForecastedOutreachDate); } catch (Exception) { csvStringBuilder.Append(errorRow + "|" + "Forecasted_Outreach_Date is not in correct format. Please Provide in MM/DD/YYYY" + Environment.NewLine); continue; } } if (!string.IsNullOrEmpty(model.RecordProcessDate)) { try { chaseOutbound.RecordProcessDate = Convert.ToDateTime(model.RecordProcessDate); } catch (Exception) { csvStringBuilder.Append(errorRow + "|" + "Record_Process_Date is not in correct format. Please Provide in MM/DD/YYYY" + Environment.NewLine); continue; } } successRows++; } catch (Exception ex) { _logger.Error("Error importing data."); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine); } } if (successRows < table.Rows.Count) { var logFileName = _pipeDelimitedReportHelper.GetReportName(ReportType.Exception); var logFile = SaveLogFile(fileLocation.PhysicalPath + logFileName + ".txt", csvStringBuilder); outboundUpload.LogFileId = logFile.Id; } outboundUpload.SuccessUploadCount = successRows; outboundUpload.FailedUploadCount = table.Rows.Count - successRows; outboundUpload.ParseEndTime = DateTime.Now; outboundUpload.StatusId = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); if (successRows > 1) { System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path); ((IFileRepository)_fileRepository).MarkasArchived(file.Id); } } catch (Exception ex) { outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed; _outboundUploadRepository.Save(outboundUpload); _logger.Error(string.Format("while Parsing File")); _logger.Error("Ex Message" + ex.Message); _logger.Error("Ex Stack Trace " + ex.StackTrace); } } } }