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 JsonResult MassAssignment(MassAgentAssignmentEditModel data) { var model = new MassAgentAssignmentViewModel(); var healthPlanId = data.HealthPlanId; var callQueueCategory = data.CallQueueCategory; var criteriaId = data.CriteriaId; var callQueue = new CallQueue(); if (healthPlanId == null || (healthPlanId.HasValue && healthPlanId.Value == 0)) { return(Json(model.ErrorMessage = "Select healthplan first", JsonRequestBehavior.AllowGet)); } if (!(callQueueCategory == HealthPlanCallQueueCategory.FillEventsHealthPlan || callQueueCategory == HealthPlanCallQueueCategory.MailRound || callQueueCategory == HealthPlanCallQueueCategory.LanguageBarrier || callQueueCategory == HealthPlanCallQueueCategory.AppointmentConfirmation)) { return(Json(model.ErrorMessage = "Select call queue first", JsonRequestBehavior.AllowGet)); } if (Request != null && Request.Files != null && Request.Files.Count > 0 && data.MassAssignmentFile != null) { HttpPostedFileBase file = Request.Files[0]; var uploadDateTime = DateTime.Now; var fileUploadName = @"MassAgentAssignment_" + uploadDateTime.ToString("yyyyMMddHHmmss") + "_" + _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId + ".csv"; var tempMediaFileLocation = _mediaRepository.GetTempMediaFileLocation(); var tempPhysicalPath = tempMediaFileLocation.PhysicalPath; var tempFullpath = tempPhysicalPath + fileUploadName; var logFileName = "Failure_" + fileUploadName; var logFilePath = tempPhysicalPath + logFileName; var fileExtension = file.FileName.Split('.'); if ((fileExtension.Length >= 2 && fileExtension[fileExtension.Length - 1].ToLower() != "csv") || fileExtension.Length < 2) { return(Json(model.ErrorMessage = "File format is not CSV", JsonRequestBehavior.AllowGet)); } try { file.SaveAs(tempFullpath); //save in Temp model.UploadedCsvFileName = fileUploadName; } catch (Exception) { return(Json(model.ErrorMessage = "Internal error occurred", JsonRequestBehavior.AllowGet)); } var massAssignmentTable = _csvReader.ReadWithTextQualifier(tempFullpath); if (massAssignmentTable.Rows.Count == 0) { return(Json(model.ErrorMessage = "File contains no data", JsonRequestBehavior.AllowGet)); } var columns = massAssignmentTable.Columns.Cast <DataColumn>().Select(x => x.ColumnName).ToArray(); var missingColumnNames = CheckAllColumnExist(columns); if (!string.IsNullOrEmpty(missingColumnNames)) { var customString = missingColumnNames .Replace(MassAgentAssignmentColumns.AgentName, "Agent name") .Replace(MassAgentAssignmentColumns.EmailId, "Email id") .Replace(MassAgentAssignmentColumns.StartDate, "Start date") .Replace(MassAgentAssignmentColumns.EndDate, "End date"); return(Json(model.ErrorMessage = "Missing Column Name(s):" + customString, JsonRequestBehavior.AllowGet)); } //parsing HealthPlanId and CallQueueCategory if (healthPlanId == null || string.IsNullOrEmpty(callQueueCategory)) { return(Json(model.ErrorMessage = "Please select healthplan/call queue first", JsonRequestBehavior.AllowGet)); } callQueue = _callQueueRepository.GetCallQueueByCategory(data.CallQueueCategory); if (callQueue == null) { return(Json(model.ErrorMessage = "Invalid call queue selected", JsonRequestBehavior.AllowGet)); } var agentDataCollection = new List <CallQueueAssignmentEditModel>(); DataTable table = _csvReader.CsvToDataTable(tempMediaFileLocation.PhysicalPath + fileUploadName, true); if (table.Rows.Count <= 0) { return(Json(model.ErrorMessage = "File contains no data", JsonRequestBehavior.AllowGet)); } var failedToParseRecords = new StringBuilder(); failedToParseRecords.Append(MassAgentAssignmentColumns.AgentName + "," + MassAgentAssignmentColumns.EmailId + "," + MassAgentAssignmentColumns.StartDate + "," + MassAgentAssignmentColumns.EndDate + "," + "Error Message" + Environment.NewLine); foreach (DataRow row in table.Rows) { var agentData = new CallQueueAssignmentEditModel(); var rowData = GetMassAssignmentCsvRow(row); var errorRow = rowData.AgentName + "," + rowData.EmailId + "," + rowData.StartDate + "," + rowData.EndDate; //Email Id if (string.IsNullOrEmpty(rowData.EmailId)) { failedToParseRecords.Append(errorRow + "," + "No Email Provided" + Environment.NewLine); continue; } //StartDate empty if (string.IsNullOrEmpty(rowData.StartDate)) { failedToParseRecords.Append(errorRow + "," + "Start date not provided" + Environment.NewLine); continue; } //Start Date Convert try { var startDate = Convert.ToDateTime(rowData.StartDate); if (!(startDate >= DateTime.Today)) { failedToParseRecords.Append(errorRow + "," + "Start date must be greater than or equal to current date" + Environment.NewLine); continue; } agentData.StartDate = startDate; } catch (Exception) { failedToParseRecords.Append(errorRow + "," + "Start date invalid format" + Environment.NewLine); continue; } //EndDate if (!string.IsNullOrEmpty(rowData.EndDate)) { try { var endDate = Convert.ToDateTime(rowData.EndDate); if (!(endDate >= agentData.StartDate)) { failedToParseRecords.Append(errorRow + "," + "End date should be greater than or equal to start date." + Environment.NewLine); continue; } agentData.EndDate = endDate; } catch (Exception) { failedToParseRecords.Append(errorRow + "," + "End date invalid format" + Environment.NewLine); continue; } } else { agentData.EndDate = null; } var oruId = _userRepository.SearchUserByEmailAndRole(rowData.EmailId); if (oruId == null) { failedToParseRecords.Append(errorRow + "," + "Agent not found in our records" + Environment.NewLine); continue; } if (!data.AssignmentsfromUi.IsNullOrEmpty()) { if (data.AssignmentsfromUi.Any(x => x.AssignedOrgRoleUserId == oruId)) { failedToParseRecords.Append(errorRow + "," + "Agent already added manually" + Environment.NewLine); continue; } } if (agentDataCollection.Any(x => x.AssignedOrgRoleUserId == oruId)) { failedToParseRecords.Append(errorRow + "," + "Failed, as record is already present in CSV" + Environment.NewLine); continue; } agentData.AssignedOrgRoleUserId = oruId.Value; agentData.Name = rowData.AgentName; if (criteriaId == null) { criteriaId = 0; } if (callQueueCategory == HealthPlanCallQueueCategory.FillEventsHealthPlan) { agentData.IsExistInOtherCriteria = _healthPlanCallQueueCriteriaRepository.CheckHealthPlanAssignment(healthPlanId.Value, callQueueCategory, criteriaId.Value, agentData.AssignedOrgRoleUserId, agentData.StartDate.Value, agentData.EndDate); if (agentData.IsExistInOtherCriteria) { failedToParseRecords.Append(errorRow + "," + "Start date is overlapping with already assigned date for same health plan and same call queue." + Environment.NewLine); continue; } } else { agentData.IsExistInOtherCriteria = false; } agentData.IsEdited = true; agentDataCollection.Add(agentData); } if (agentDataCollection.Count < table.Rows.Count) //Some records have failed { System.IO.File.AppendAllText(logFilePath, failedToParseRecords.ToString()); model.IsRecordsFailed = true; model.LogFileName = logFileName; } else { model.LogFileName = null; } model.SuccessAssignments = agentDataCollection; model.ErrorMessage = ""; return(Json(model, JsonRequestBehavior.AllowGet)); } else { return(Json(model.ErrorMessage = "No file has been uploaded. Please upload a csv file.", JsonRequestBehavior.AllowGet)); } }
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 PollForPhoneNumberUpdate() { _logger.Info("Starting Customer Phone Number Update Service : DateTime :" + DateTime.Now); var uploadedFilesInfo = _customerPhoneNumberUpdateUploadRepository.GetUploadedFilesInfo(); var phoneNumberUpdateFilesLocation = _mediaRepository.GetCustomerPhoneNumberUploadLocation(); if (uploadedFilesInfo.IsNullOrEmpty()) { _logger.Info("No new Files Uploaded"); return; } foreach (var uploadFileInfo in uploadedFilesInfo) //parsing all Uploaded Status Files { var failedRecords = new StringBuilder(); failedRecords.Append(LogHeader + Environment.NewLine); var successCount = 0L; try { var fileInfo = GetFile(uploadFileInfo.FileId); if (!System.IO.File.Exists(phoneNumberUpdateFilesLocation.PhysicalPath + fileInfo.Path)) { uploadFileInfo.StatusId = (long)PhoneNumberUploadStatus.FileNotFound; _customerPhoneNumberUpdateUploadRepository.Save(uploadFileInfo); _logger.Info("File not found : " + phoneNumberUpdateFilesLocation.PhysicalPath + fileInfo.Path); continue; } _logger.Info("Importing File : " + fileInfo.Path); uploadFileInfo.StatusId = (long)PhoneNumberUploadStatus.Parsing; uploadFileInfo.ParseStartTime = DateTime.Now; _customerPhoneNumberUpdateUploadRepository.Save(uploadFileInfo); DataTable table = _csvReader.CsvToDataTable(phoneNumberUpdateFilesLocation.PhysicalPath + fileInfo.Path, true); if (table.Rows.Count <= 0) { _logger.Info("No rows found in File : " + fileInfo.Path + " having FileId :" + uploadFileInfo.FileId); uploadFileInfo.ParseEndTime = DateTime.Now; uploadFileInfo.StatusId = (long)PhoneNumberUploadStatus.ParseFailed; _customerPhoneNumberUpdateUploadRepository.Save(uploadFileInfo); continue; } foreach (DataRow row in table.Rows) //Parsing Records in File { var errorRow = ""; var phoneNumberUploadLog = new CustomerPhoneNumberUpdateUploadLog(); try { var customerId = 0L; var phoneNumber = ""; var phoneNumberType = ""; var phoneNumberDomain = new PhoneNumber(); var customer = new Customer(); bool isCustomerIdProvided = false; var model = GetPhoneNumberUpdateLogModel(row); errorRow = model.CustomerId + "," + model.FirstName + "," + model.LastName + "," + model.DOB + "," + model.MemberId + "," + model.PhoneNumber + "," + model.PhoneType; GetFileRowForLog(phoneNumberUploadLog, model, uploadFileInfo.Id); #region CustomerId try //CustomerId { if (!string.IsNullOrEmpty(model.CustomerId)) { Int64.TryParse(model.CustomerId, out customerId); if (customerId == 0) { const string errorMessage = "Invalid Customer Id"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } isCustomerIdProvided = true; } } catch (Exception ex) { const string errorMessage = "Error importing CustomerId"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); failedRecords.Append(errorRow + "," + "CustomerId Invalid" + Environment.NewLine); continue; } #endregion if (!isCustomerIdProvided) { if (string.IsNullOrEmpty(model.FirstName) || string.IsNullOrEmpty(model.LastName) || string.IsNullOrEmpty(model.DOB) || string.IsNullOrEmpty(model.MemberId)) { const string errorMessage = "Incomplete customer data."; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } } #region PhoneNumber try //PhoneNumber { phoneNumber = ToNumber(model.PhoneNumber); if (string.IsNullOrEmpty(phoneNumber)) { const string errorMessage = "Invalid phone number"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } } catch (Exception ex) { const string errorMessage = "Error importing PhoneNumber"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + "Invalid Phone Number" + Environment.NewLine); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); continue; } #endregion #region PhoneNumberType try //Phone Type (requirement was for only Home and Cell phone numbers) { phoneNumberType = model.PhoneType; if (string.IsNullOrEmpty(phoneNumberType)) { const string errorMessage = "Phone type should be Home or Cell"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } if (phoneNumberType.ToLower() != _phoneTypeHome.ToLower() && phoneNumberType.ToLower() != _phoneTypeCell.ToLower()) { const string errorMessage = "Phone type should be Home or Cell"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } } catch (Exception ex) { const string errorMessage = "Error importing PhoneType"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + "Phone type should be Home or Cell" + Environment.NewLine); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); continue; } #endregion #region CreatePhoneNumber // Creating Phone Number try { var phoneNumberTypeEnumValue = (phoneNumberType.ToLower() == _phoneTypeHome.ToLower()) ? PhoneNumberType.Home : PhoneNumberType.Mobile; phoneNumberDomain = _phoneNumberFactory.CreatePhoneNumber(phoneNumber, phoneNumberTypeEnumValue); if (phoneNumberDomain.PhoneNumberType == PhoneNumberType.Unknown) { const string errorMessage = "Phone number not valid"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } } catch (Exception ex) { const string errorMessage = "Error while Creating PhoneNumberDomain"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + "Phone number not valid" + Environment.NewLine); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); continue; } #endregion #region Get Customer try { var dob = new DateTime(); if (isCustomerIdProvided) { customer = _customerRepository.GetCustomer(customerId); } else { try { dob = Convert.ToDateTime(model.DOB); } catch (Exception ex) { const string errorMessage = "Invalid date format"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } try { customer = _customerRepository.GetCustomerForPhoneNumberUpdate(model.FirstName, model.LastName, dob, model.MemberId); } catch (Exception ex) { const string errorMessage = "No record present for this data."; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } } } catch (Exception ex) { const string errorMessage = "No record present for this CustomerId"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + errorMessage + Environment.NewLine); continue; } #endregion #region Saving Data try { var shouldSaveNotes = customer.IsIncorrectPhoneNumber; if (phoneNumberType.ToLower() == _phoneTypeHome.ToLower()) { customer.HomePhoneNumber = phoneNumberDomain; } else { customer.MobilePhoneNumber = phoneNumberDomain; } customer.IsIncorrectPhoneNumber = false; customer.IncorrectPhoneNumberMarkedDate = null; //saves CustomerProfile and Creates History and Updates CallQueueCustomer _customerService.SaveCustomer(customer, uploadFileInfo.UploadedByOrgRoleUserId); if (shouldSaveNotes) { _customerNotesService.SavePhoneNumberUpdatedMessage(customer.CustomerId, uploadFileInfo.UploadedByOrgRoleUserId); } SaveUploadLogToDb(phoneNumberUploadLog, ""); //Log Success successCount++; } catch (Exception ex) { const string errorMessage = "Error while saving Details"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + "Save Failed" + Environment.NewLine); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); continue; } #endregion } catch (Exception ex) { const string errorMessage = "Some Error Occurred"; SaveUploadLogToDb(phoneNumberUploadLog, errorMessage + " Exception Message: " + ex.Message); failedRecords.Append(errorRow + "," + "Save Failed" + Environment.NewLine); _logger.Error(errorMessage); _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace); continue; } } if (successCount < table.Rows.Count) { var logFileName = "FailRecords_" + fileInfo.Path; var logFile = SaveLogFile(phoneNumberUpdateFilesLocation.PhysicalPath + logFileName, failedRecords); uploadFileInfo.LogFileId = logFile.Id; } uploadFileInfo.SuccessUploadCount = successCount; uploadFileInfo.FailedUploadCount = table.Rows.Count - successCount; uploadFileInfo.ParseEndTime = DateTime.Now; uploadFileInfo.StatusId = successCount > 0 ? (long)PhoneNumberUploadStatus.Parsed : (long)PhoneNumberUploadStatus.ParseFailed; _customerPhoneNumberUpdateUploadRepository.Save(uploadFileInfo); } catch (Exception ex) { uploadFileInfo.StatusId = (long)PhoneNumberUploadStatus.ParseFailed; _customerPhoneNumberUpdateUploadRepository.Save(uploadFileInfo); _logger.Error("Parse Failed while parsing File , FileId:" + uploadFileInfo.FileId); _logger.Error("Ex Message" + ex.Message); _logger.Error("Ex Stack Trace " + ex.StackTrace); } } }