Ejemplo n.º 1
0
        /// <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);
            }
        }