Ejemplo n.º 1
0
        public void OnVerifiablePayload_MassTerminationHandler_Should_Process()
        {
            Commands.DataloadRequest message = GetPayload();


            var result = handler.HandleAsync(message, "TrackingId");

            this.MassTerminateService.Verify(m => m.ProcessPayload(It.IsAny <Commands.DataloadRequest>(), It.IsAny <IDataFactory>()));
        }
Ejemplo n.º 2
0
        public void OnException_MassTerminationHandler_ShouldReturn_Fatal()
        {
            this.MassTerminateService.Setup(x => x.ProcessPayload(It.IsAny <Commands.DataloadRequest>(),
                                                                  It.IsAny <IDataFactory>())).Throws(new Exception());

            Commands.DataloadRequest message = GetPayload();


            var result = handler.HandleAsync(message, "TrackingId");

            Assert.IsTrue(result.Result == MessageHandlerResult.Fatal);
        }
Ejemplo n.º 3
0
        public bool ProcessMassTerminate(MassTerminationModelSerialized employee, Commands.DataloadRequest payload)
        {
            int groupID = int.Parse(payload.OrganisationId);

            Logger.InfoFormat("Validating a given employee number");
            using (var context = _contextFactory.GetPortalDBContextAsync(groupID))
            {
                try
                {
                    var command = "sprc_DL_ProcessMassTermination";

                    using (var sqlConnection = new SqlConnection(context.Result.Database.Connection.ConnectionString))
                    {
                        sqlConnection.Open();
                        var cmd = sqlConnection.CreateCommand();
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.CommandText = command;
                        cmd.Parameters.Add(new SqlParameter("@BatchID", employee.DataLoadBatchId));
                        cmd.Parameters.Add(new SqlParameter("@JobID", employee.DataLoadJobId));
                        cmd.Parameters.Add(new SqlParameter("@EmployeeNumber", employee.EmployeeNumber));
                        cmd.Parameters.Add(new SqlParameter("@TerminationReason", employee.TerminationReason));
                        cmd.Parameters.Add(new SqlParameter("@TerminationDate", employee.TerminationDate));
                        cmd.Parameters.Add(new SqlParameter("@UploadedBy", employee.DataLoadBatchId));

                        var result = cmd.ExecuteScalar();

                        if (result.GetType() != typeof(DBNull))
                        {
                            if ((int?)result == 1)
                            {
                                Logger.InfoFormat("No Error reported for EmployeeNumber: {0} for GroupID: {1}",
                                                  new object[] { employee, groupID });
                                return(true);
                            }
                            else
                            {
                                Logger.ErrorFormat("Error in processing Mass Terminate for EmployeeNumber: {0} for GroupID: {1}",
                                                   new object[] { employee, groupID });
                                return(false);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.FatalFormat("Error in processing Mass Terminate, " +
                                       "Exception Message: {0}, Inner Exception Message: {1}",
                                       e.Message, e.InnerException == null ? "null" : e.InnerException.Message);
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
        public bool CopyDataloadBatchToPortal(Commands.DataloadRequest payload)
        {
            int groupID = int.Parse(payload.OrganisationId);

            using (var context = _contextFactory.GetPortalDBContextAsync(groupID))
            {
                var command = "dbo.sprc_DL_InsertPayload";

                using (var sqlConnection = new SqlConnection(context.Result.Database.Connection.ConnectionString))
                {
                    try
                    {
                        var spParam = new DynamicParameters();
                        spParam.Add("@BatchID", payload.BatchID);
                        spParam.Add("@JobID", payload.JobID);
                        spParam.Add("@DataloadTypeID", payload.Dataload);
                        spParam.Add("@DateUploaded", DateTime.Now);
                        spParam.Add("@UploadedBy", payload.RequestedBy);
                        spParam.Add("@ReturnedVal", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

                        var result = sqlConnection.ExecuteScalar(command,
                                                                 spParam, commandType: CommandType.StoredProcedure);

                        if (result.GetType() != typeof(DBNull))
                        {
                            if ((int?)result == 1)
                            {
                                Logger.InfoFormat("No Error reported for BatchNumber: {0} ",
                                                  new object[] { payload.BatchID });
                                return(true);
                            }
                            else
                            {
                                Logger.ErrorFormat("Error reported for inside the proc {0} BatchNumber: {1} ",
                                                   new object[] { command, payload.BatchID });
                                return(false);
                            }
                        }
                        return(false);
                    }
                    catch (Exception e)
                    {
                        Logger.FatalFormat("Error in processing payload insert, " +
                                           "Exception Message: {0}, Inner Exception Message: {1}",
                                           e.Message, e.InnerException == null ? "null" : e.InnerException.Message);
                        return(false);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public void CopyTerminationStagingErrorsToPortal(Commands.DataloadRequest payload)
        {
            int groupID = int.Parse(payload.OrganisationId);

            Logger.InfoFormat("Validating a given employee number");
            using (var context = _contextFactory.GetPortalDBContextAsync(groupID))
            {
                using (var stagingContext = _contextFactory.GetStagingDBContext())
                {
                    var errors = (from err in stagingContext.DataLoadErrors
                                  where (err.DataLoadBatchRefId.ToString() == payload.BatchID)
                                  select err)
                                 .AsEnumerable()
                                 .Select(x => new
                    {
                        MassTerminationId  = "",
                        DataLoadJobRefId   = x.DataLoadJobRefId,
                        DataLoadBatchRefId = x.DataLoadBatchRefId,
                        ClientID           = 0,
                        EmployeeNumber     = GetParam(x.ErrRecord, "EmployeeNumber"),
                        TerminationDate    = GetParam(x.ErrRecord, "TerminationDate"),
                        TerminationReason  = GetParam(x.ErrRecord, "TerminationReason"),
                        ErrorStatus        = 2,
                        ErrorDescription   = x.ErrDescription
                    });
                    using (var sqlConnection = new SqlConnection(context.Result.Database.Connection.ConnectionString))
                    {
                        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnection))
                        {
                            bulkCopy.DestinationTableName = "dbo.t_DL_MassTermination";
                            try
                            {
                                sqlConnection.Open();
                                var bulk = ConvertToDataTable(errors.ToList());
                                bulkCopy.WriteToServer(bulk);
                            }
                            catch (Exception e)
                            {
                                Logger.FatalFormat("Error doing bulk upload into t_MassTermination with message {0}", e.Message);
                            }
                            finally
                            {
                                sqlConnection.Close();
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 6
0
        public void OnsqlExceptionWithGeneralNetworkErrorCode_MassTerminationHandler_Should_Retry()
        {
            var sqlException = new ExceptionHelper().WithErrorCode((int)SqlErrorCodes.GeneralNetworkError)
                               .WithErrorMessage("Database exception occured...")
                               .Build();

            this.MassTerminateService.Setup(x => x.ProcessPayload(It.IsAny <Commands.DataloadRequest>(),
                                                                  It.IsAny <IDataFactory>())).Throws(sqlException);

            Commands.DataloadRequest message = GetPayload();


            var result = handler.HandleAsync(message, "TrackingId");

            Assert.IsTrue(result.Result == MessageHandlerResult.Retry);
        }