private void AddBadREcordsToSummary(List <string> badRecords, ref HRSummary summary) { foreach (var item in badRecords) { List <string> parts = new List <string>(); string s; s = item.removeItems(new[] { "\"" }); parts.AddRange(s.Split('~')); var obj = new ProcessedSummary(); obj.GCIMSID = -1; obj.Action = "Invalid Record From CSV File"; obj.EmployeeID = parts.Count > 0 ? parts[0] : "Unknown Employee Id"; obj.LastName = parts.Count > 1 ? parts[1] : "Unknown Last Name"; obj.Suffix = parts.Count > 2 ? parts[2] : "Unknown Suffix"; obj.FirstName = parts.Count > 3 ? parts[3] : "Unknown First Name"; obj.MiddleName = parts.Count > 4 ? parts[4] : "Unknown Middle Name"; summary.UnsuccessfulUsersProcessed.Add(obj); } }
/// <summary> /// Get HR Data /// Loop HR Data /// Get GCIMS Record /// Update GCIMS Record /// </summary> /// <param name="hrFile"></param> public void ProcessHRFile(string HRFile) { log.Info("Processing HR Users"); try { Employee gcimsRecord; string columnList = string.Empty; List <Employee> usersToProcess; List <Employee> allGCIMSData; HRSummary summary = new HRSummary(); FileReader fileReader = new FileReader(); ValidateHR validate = new ValidateHR(lookups); Helpers helper = new Helpers(); SaveData save = new SaveData(); log.Info("Loading HR Links File"); EmployeeMapping em = new EmployeeMapping(lookups); List <string> badRecords; usersToProcess = fileReader.GetFileData <Employee, EmployeeMapping>(HRFile, out badRecords, em); AddBadREcordsToSummary(badRecords, ref summary); log.Info("Loading GCIMS Data"); allGCIMSData = retrieve.AllGCIMSData(); ProcessResult updatedResults; //Start Processing the HR Data foreach (Employee employeeData in usersToProcess) { log.Info("Processing HR User: "******"Looking for matching record: " + employeeData.Person.EmployeeID); gcimsRecord = RecordFound(employeeData, allGCIMSData); if ((gcimsRecord != null && (gcimsRecord.Person.EmployeeID != employeeData.Person.EmployeeID) && (!Convert.ToBoolean(ConfigurationManager.AppSettings["DEBUG"].ToString())))) { log.Info("Adding HR Links ID to record: " + gcimsRecord.Person.GCIMSID); save.InsertEmployeeID(gcimsRecord.Person.GCIMSID, employeeData.Person.EmployeeID); } //If no record found write to the record not found summary file if (gcimsRecord == null) { //Danger Will Robinson, Danger summary.RecordsNotFound.Add(new RecordNotFoundSummary { GCIMSID = -1, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix }); } if (TerritoriesNotCountriesArray.Contains(employeeData.Birth.CountryOfBirth.ToLower()) && string.IsNullOrWhiteSpace(employeeData.Birth.StateOfBirth)) { switch (employeeData.Birth.CountryOfBirth.ToLower()) { case "rq": { employeeData.Birth.StateOfBirth = "PR"; } break; case "gq": { employeeData.Birth.StateOfBirth = "GU"; } break; case "vq": { employeeData.Birth.StateOfBirth = "VI"; } break; case "aq": { employeeData.Birth.StateOfBirth = "AS"; } break; default: { employeeData.Birth.StateOfBirth = ""; } break; } employeeData.Birth.CountryOfBirth = "US"; } //If there are critical errors write to the error summary and move to the next record log.Info("Checking for Critical errors for user: "******"Comparing HR and GCIMS Data: " + employeeData.Person.EmployeeID); if (!AreEqualGCIMSToHR(gcimsRecord, employeeData, out columnList)) { //Checking if the SSN are different if (employeeData.Person.SocialSecurityNumber != gcimsRecord.Person.SocialSecurityNumber) { summary.SocialSecurityNumberChanges.Add(new SocialSecurityNumberChangeSummary { GCIMSID = gcimsRecord.Person.GCIMSID, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix, Status = gcimsRecord.Person.Status }); } log.Info("Copying objects: " + employeeData.Person.EmployeeID); helper.CopyValues <Employee>(employeeData, gcimsRecord, new string[] { "InitialResult", "InitialResultDate", "FinalResult", "FinalResultDate" }); log.Info("Checking if inactive record: " + employeeData.Person.EmployeeID); if (employeeData.Person.Status == "Inactive") { summary.InactiveRecords.Add(new InactiveSummary { GCIMSID = gcimsRecord.Person.GCIMSID, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix, Status = employeeData.Person.Status }); log.Warn("Inactive Record: " + employeeData.Person.EmployeeID); } log.Info("Updating Record: " + employeeData.Person.EmployeeID); if (Convert.ToBoolean(ConfigurationManager.AppSettings["DEBUG"].ToString())) { updatedResults = new ProcessResult { Result = -1, Action = "Testing", Error = "SQL Error (Testing)" }; } else { updatedResults = save.UpdatePersonInformation(gcimsRecord.Person.GCIMSID, employeeData); } if (updatedResults.Result > 0) { summary.SuccessfulUsersProcessed.Add(new ProcessedSummary { GCIMSID = gcimsRecord.Person.GCIMSID, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix, Action = updatedResults.Action, UpdatedColumns = columnList }); log.Info("Successfully Updated Record: " + employeeData.Person.EmployeeID); } else { summary.UnsuccessfulUsersProcessed.Add(new ProcessedSummary { GCIMSID = gcimsRecord.Person.GCIMSID, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix, Status = employeeData.Person.Status, Action = updatedResults.Error }); log.Error("Unable to update: " + employeeData.Person.EmployeeID); } } else { log.Info("HR and GCIMS Data are the same: " + employeeData.Person.EmployeeID); summary.IdenticalRecords.Add(new IdenticalRecordSummary { GCIMSID = gcimsRecord.Person.GCIMSID, EmployeeID = employeeData.Person.EmployeeID, FirstName = employeeData.Person.FirstName, MiddleName = employeeData.Person.MiddleName, LastName = employeeData.Person.LastName, Suffix = employeeData.Person.Suffix, Status = gcimsRecord.Person.Status }); } } } emailData.HRFilename = Path.GetFileName(HRFile); emailData.HRAttempted = usersToProcess.Count; emailData.HRIdentical = summary.IdenticalRecords.Count; emailData.HRSocial = summary.SocialSecurityNumberChanges.Count; emailData.HRSucceeded = summary.SuccessfulUsersProcessed.Count; emailData.HRInactive = summary.InactiveRecords.Count; emailData.HRRecordsNotFound = summary.RecordsNotFound.Count; emailData.HRFailed = summary.UnsuccessfulUsersProcessed.Count; emailData.HRHasErrors = summary.UnsuccessfulUsersProcessed.Count > 0; //Add log entries log.Info("HR Records Updated: " + String.Format("{0:#,###0}", summary.SuccessfulUsersProcessed.Count)); log.Info("HR Users Not Processed: " + String.Format("{0:#,###0}", summary.UnsuccessfulUsersProcessed.Count)); log.Info("HR Total Records: " + String.Format("{0:#,###0}", usersToProcess.Count)); summary.GenerateSummaryFiles(emailData); } //Catch all errors catch (Exception ex) { log.Error("Process HR Users Error:" + ex.Message + " " + ex.InnerException + " " + ex.StackTrace); } }