Пример #1
0
        public void ShouldReturnSuccessForDelete()
        {
            PaycheckModel paycheck = new PaycheckModel();

            paycheck.ID = 7;

            bool   opeartionSucceeded = false;
            string dataAccessJsonStr  = string.Empty;
            string formattedJsonStr   = string.Empty;

            try
            {
                paycheckServices.Remove(paycheck);
                opeartionSucceeded = true;
            }
            catch (DataAccessException e)
            {
                e.DataAccessStatusInfo.OperationSucceeded = opeartionSucceeded;
                dataAccessJsonStr = JsonConvert.SerializeObject(e.DataAccessStatusInfo);
                formattedJsonStr  = JToken.FromObject(dataAccessJsonStr).ToString();
            }

            try
            {
                Assert.True(opeartionSucceeded);
                testOutputHelper.WriteLine("The record has been succesfully deleted");
            }
            finally
            {
                testOutputHelper.WriteLine(formattedJsonStr);
            }
        }
        public IEnumerable <IPaycheckModel> GetByEmployee(int employeeID)
        {
            List <PaycheckModel> paychecks = new List <PaycheckModel>();

            DataAccessStatus dataAccessStatus     = new DataAccessStatus();
            bool             matchingRecoredFound = false;
            string           selectByEmpQuery     = "SELECT ID, Amount, PayrollID, ReceiptionDate " +
                                                    "FROM Paychecks WHERE EmployeeID = @EmployeeID";

            using (SqlConnection sqlConnection = new SqlConnection(this.connectionString))
            {
                try
                {
                    sqlConnection.Open();

                    using (SqlCommand cmd = new SqlCommand(selectByEmpQuery, sqlConnection))
                    {
                        cmd.CommandText = selectByEmpQuery;
                        cmd.Prepare();
                        cmd.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));

                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            matchingRecoredFound = reader.HasRows;
                            while (reader.Read())
                            {
                                PaycheckModel paycheck = new PaycheckModel();
                                paycheck.ID             = Convert.ToInt32(reader["ID"].ToString());
                                paycheck.EmployeeID     = employeeID;
                                paycheck.PayrollID      = Convert.ToInt32(reader["PayrollID"].ToString());
                                paycheck.Amount         = Convert.ToInt32(reader["Amount"].ToString());
                                paycheck.ReceiptionDate = (DateTime)reader["ReceiptionDate"];

                                paychecks.Add(paycheck);
                            }
                        }
                    }
                    sqlConnection.Close();
                }
                catch (SqlException e)
                {
                    dataAccessStatus.setValues(status: "Error", operationSucceeded: false, exceptionMessage: e.Message,
                                               customMessage: "Unable to get the paychecks records from database", helpLink: e.HelpLink, errorCode: e.ErrorCode,
                                               stackTrace: e.StackTrace);

                    throw new DataAccessException(e.Message, e.InnerException, dataAccessStatus);
                }

                if (!matchingRecoredFound)
                {
                    dataAccessStatus.setValues(status: "Error", operationSucceeded: false, exceptionMessage: "",
                                               customMessage: $"Record not found!. Unable to get Paycheck record for with employee id: {employeeID}.It does not exist in the database.", helpLink: "", errorCode: 0,
                                               stackTrace: "");

                    throw new DataAccessException(dataAccessStatus);
                }

                return(paychecks);
            }
        }
        public IEnumerable <IPaycheckModel> GetByMonth(DateTime date)
        {
            List <PaycheckModel> paychecks        = new List <PaycheckModel>();
            DataAccessStatus     dataAccessStatus = new DataAccessStatus();
            bool   recordsFound = false;
            string selectQuery  = "Select * FROM Paychecks WHERE Month(ReceiptionDate) = @Month AND YEAR(ReceiptionDate) = @Year ";

            using (SqlConnection sqlConnection = new SqlConnection(this.connectionString))
            {
                try
                {
                    sqlConnection.Open();
                }
                catch (SqlException e)
                {
                    dataAccessStatus.setValues(status: "Error", operationSucceeded: false, exceptionMessage: e.Message,
                                               customMessage: "Unable to get the paychecks records from database", helpLink: e.HelpLink, errorCode: e.ErrorCode,
                                               stackTrace: e.StackTrace);

                    throw new DataAccessException(e.Message, e.InnerException, dataAccessStatus);
                }

                using (SqlCommand cmd = new SqlCommand(selectQuery, sqlConnection))
                {
                    cmd.CommandText = selectQuery;
                    cmd.Prepare();

                    cmd.Parameters.AddWithValue("@Month", date.Month);
                    cmd.Parameters.AddWithValue("@Year", date.Year);

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        recordsFound = reader.HasRows;
                        while (reader.Read())
                        {
                            PaycheckModel paycheck = new PaycheckModel();
                            paycheck.ID             = Convert.ToInt32(reader["ID"].ToString());
                            paycheck.EmployeeID     = Convert.ToInt32(reader["EmployeeID"].ToString());;
                            paycheck.PayrollID      = Convert.ToInt32(reader["PayrollID"].ToString());
                            paycheck.Amount         = Convert.ToInt32(reader["Amount"].ToString());
                            paycheck.ReceiptionDate = (DateTime)reader["ReceiptionDate"];

                            paychecks.Add(paycheck);
                        }
                    }
                }
                sqlConnection.Close();
            }
            if (!recordsFound)
            {
                dataAccessStatus.setValues(status: "Error", operationSucceeded: false, exceptionMessage: "",
                                           customMessage: $"Record not found!. Unable to get Paycheck records in Month {date.Month}.", helpLink: "", errorCode: 0,
                                           stackTrace: "");

                throw new DataAccessException(dataAccessStatus);
            }
            return(paychecks);
        }
Пример #4
0
        private decimal GetNetPay(PaycheckModel paycheckModel)
        {
            decimal netPay = paycheckModel.GrossPay;

            netPay -= paycheckModel.FederalTax * paycheckModel.GrossPay;
            netPay -= paycheckModel.StateTax * paycheckModel.GrossPay;
            netPay  = Math.Round(netPay, 2);
            return(netPay);
        }
Пример #5
0
        private TopEarnerModel GetTopEarner(PaycheckModel paycheck)
        {
            var topEarner = new TopEarnerModel
            {
                FirstName   = paycheck.FirstName,
                GrossPay    = paycheck.GrossPay,
                LastName    = paycheck.LastName,
                YearsWorked = GetYearsWorked(paycheck.StartDate)
            };

            return(topEarner);
        }
Пример #6
0
        public List <PaycheckModel> GetPaychecks(List <EmployeeModel> employeeDatas)
        {
            var paychecks = new List <PaycheckModel>();

            foreach (var employeeData in employeeDatas)
            {
                PaycheckModel paycheckModel = GetPaycheckModel(employeeData);
                paychecks.Add(paycheckModel);
            }

            paychecks = paychecks.OrderByDescending(x => x.GrossPay).ToList();
            DocumentService.CreatePaychecksDocument(paychecks);
            return(paychecks);
        }
Пример #7
0
        public void ShouldThrowExceptionIfPaycheckAmountIsBiggerThanTheNetpay()
        {
            PaycheckModel paycheck = new PaycheckModel();

            paycheck.Amount     = 1000000000;
            paycheck.EmployeeID = 4;
            paycheck.PayrollID  = 7;



            Exception ex = Assert.Throws <DataAccessException>(testCode: () => this.paycheckServices.Add(paycheck));

            testOutputHelper.WriteLine(ex.Message);
        }
Пример #8
0
        public IActionResult PayOrder(int orderId, [FromBody] PaycheckModel paycheck)
        {
            if (!GetAndVAlidateUser(out var user))
            {
                return(BadRequest(new { message = "User not found" }));
            }

            var currentOrder = user.Orders?.SingleOrDefault(o => o.Id == orderId);

            if (currentOrder == null)
            {
                return(BadRequest(new { message = "This order does not belongs to current user" }));
            }

            currentOrder = _orderService.ProccedPayment(currentOrder, paycheck.FullName, paycheck.CardNumber);

            return(Ok(currentOrder));
        }
        public IEnumerable <IPaycheckModel> GetAll()
        {
            List <PaycheckModel> paychecks        = new List <PaycheckModel>();
            DataAccessStatus     dataAccessStatus = new DataAccessStatus();

            using (SqlConnection sqlConnection = new SqlConnection(this.connectionString))
            {
                try
                {
                    sqlConnection.Open();

                    string selectAllQuery = "Select * FROM Paychecks";


                    using (SqlCommand cmd = new SqlCommand(selectAllQuery, sqlConnection))
                    {
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                PaycheckModel paycheck = new PaycheckModel();
                                paycheck.ID             = Int32.Parse(reader["ID"].ToString());
                                paycheck.Amount         = Int32.Parse(reader["Amount"].ToString());
                                paycheck.EmployeeID     = Int32.Parse(reader["EmployeeID"].ToString());
                                paycheck.PayrollID      = Int32.Parse(reader["PayrollID"].ToString());
                                paycheck.ReceiptionDate = (DateTime)reader["ReceiptionDate"];

                                paychecks.Add(paycheck);
                            }
                        }
                    }
                    sqlConnection.Close();
                }
                catch (SqlException e)
                {
                    dataAccessStatus.setValues(status: "Error", operationSucceeded: false, exceptionMessage: e.Message,
                                               customMessage: "Unable to get Paychecks list from database", helpLink: e.HelpLink, errorCode: e.ErrorCode,
                                               stackTrace: e.StackTrace);

                    throw new DataAccessException(e.Message, e.InnerException, dataAccessStatus);
                }
                return(paychecks);
            }
        }
Пример #10
0
        public void ShouldReturnSuccessForAdd()
        {
            PaycheckModel paycheck = new PaycheckModel();

            paycheck.Amount     = 10000;
            paycheck.EmployeeID = 4;
            paycheck.PayrollID  = 7;

            var    opeartionSucceeded = false;
            string formattedJsonStr   = string.Empty;
            string dataAccessJsonStr;

            try
            {
                paycheckServices.Add(paycheck);
                opeartionSucceeded = true;
            }
            catch (ArgumentException e)
            {
                dataAccessJsonStr = JsonConvert.SerializeObject(e);
                formattedJsonStr  = JToken.FromObject(dataAccessJsonStr).ToString();
            }
            catch (DataAccessException e)
            {
                e.DataAccessStatusInfo.OperationSucceeded = opeartionSucceeded;
                dataAccessJsonStr = JsonConvert.SerializeObject(e.DataAccessStatusInfo);
                formattedJsonStr  = JToken.FromObject(dataAccessJsonStr).ToString();
            }

            try
            {
                Assert.True(opeartionSucceeded);
                testOutputHelper.WriteLine("The record has been succesfully added");
            }
            finally
            {
                testOutputHelper.WriteLine(formattedJsonStr);
            }
        }
Пример #11
0
        private PaycheckModel GetPaycheckModel(EmployeeModel employeeData)
        {
            var paycheckModel = new PaycheckModel
            {
                EmployeeId  = employeeData.EmployeeId,
                FirstName   = employeeData.FirstName,
                LastName    = employeeData.LastName,
                GrossPay    = GetGrossPay(employeeData),
                FederalTax  = TaxData.FederalTax,
                StateTax    = GetStateTax(employeeData.HomeState),
                StartDate   = employeeData.StartDate,
                HomeState   = employeeData.HomeState,
                HoursWorked = employeeData.HoursWorked
            };

            paycheckModel.NetPay = GetNetPay(paycheckModel);

            //Round these once we've made the necessary calculations.
            paycheckModel.GrossPay   = Math.Round(paycheckModel.GrossPay, 2);
            paycheckModel.FederalTax = Math.Round(paycheckModel.FederalTax, 2);
            paycheckModel.StateTax   = Math.Round(paycheckModel.StateTax, 2);
            return(paycheckModel);
        }
Пример #12
0
        public void ShouldReturnPaycheckByID()
        {
            PaycheckModel paycheck = null;
            int           idToGet  = 6;

            try
            {
                paycheck = paycheckServices.GetByID(idToGet);
            }
            catch (DataAccessException e)
            {
                testOutputHelper.WriteLine(e.DataAccessStatusInfo.getFormattedValues());
            }

            Assert.True(paycheck != null);
            Assert.True(paycheck.ID == idToGet);

            if (paycheck != null)
            {
                string ModelJsonStr     = Newtonsoft.Json.JsonConvert.SerializeObject(paycheck);
                string formattedJsonStr = JToken.Parse(ModelJsonStr).ToString();
                testOutputHelper.WriteLine(formattedJsonStr);
            }
        }
Пример #13
0
 public Task <Order> ProceedPayment([Header("Authorization")] string token, [AliasAs("id")] int orderId, [Body] PaycheckModel model)
 {
     return(Task.FromResult(current));
 }