public List <Master> GetMasterWorkHistoryByUserId(int userId)
        {
            List <Master> myMasters   = new List <Master>();
            User          currentUser = new UserCRUD().Read(userId);
            List <Job>    jobs        = new JobCRUD().GetJobs();

            if (jobs.Count > 0)
            {
                foreach (Job job in jobs)
                {
                    Master master = new Master();
                    master.JobId   = job.JobId;
                    master.UserId  = userId;
                    master.JobName = job.Name;

                    //get work periods for user and job
                    List <WorkPeriod> workPeriods = new WorkPeriodCRUD().GetWorkPeriodsByJobAndUser(job.JobId, userId);
                    if (workPeriods.Count > 0)
                    {
                        foreach (WorkPeriod period in workPeriods)
                        {
                            if (period.End != null)
                            {
                                TimeSpan span = Convert.ToDateTime(period.End).Subtract(period.Start);
                                master.TotalJobTime += span;
                            }
                        }
                        master.TotalJobTimeReadable = master.TotalJobTime.Hours + " hours and " + master.TotalJobTime.Minutes + " minutes";
                    }

                    // get transactions for user and job
                    // now find transactions that match the job and user
                    List <Transaction> transactions = new TransactionCRUD().GetTransactions().Where(x => x.UserId == userId && x.JobId == job.JobId).ToList();

                    foreach (Transaction transaction in transactions)
                    {
                        master.AmoutPaidForJob += transaction.Amount;
                    }

                    if (currentUser.WorkRate == 0)
                    {
                        master.HoursPaid = 0;
                    }
                    else
                    {
                        master.HoursPaid = master.AmoutPaidForJob / currentUser.WorkRate;
                    }


                    master.HoursOwed = Convert.ToInt32(master.TotalJobTime.Hours) - Convert.ToInt32(master.HoursPaid);

                    //TODO: fix decimal bug

                    master.MoneyPaid = master.HoursPaid * currentUser.WorkRate;
                    master.MoneyOwed = master.HoursOwed * currentUser.WorkRate;

                    //decimal.Round(master.HoursPaid, 2, MidpointRounding.AwayFromZero);
                    //decimal.Round(master.HoursOwed, 2, MidpointRounding.AwayFromZero);
                    //decimal.Round(master.MoneyPaid, 2, MidpointRounding.AwayFromZero);
                    //decimal.Round(master.MoneyOwed, 2, MidpointRounding.AwayFromZero);

                    myMasters.Add(master);
                }
            }
            return(myMasters);
        }
Example #2
0
        public int Destroy(int jobId)
        {
            int    result      = 0;
            string textCommand = "DELETE FROM tbl_Jobs WHERE JobId = @JobId";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(textCommand, connection);

                command.Parameters.AddWithValue("@JobId", jobId);

                connection.Open();

                result = command.ExecuteNonQuery();

                connection.Close();
            }

            if (result > 0)
            {
                // delete charges
                List <Charge> charges = new ChargeCRUD().GetChargesByJobId(jobId);

                if (charges.Count > 0)
                {
                    foreach (Charge charge in charges)
                    {
                        new ChargeCRUD().Destroy(jobId, charge.ChargeId);
                    }
                }

                // remove orders
                List <Order> orders = new OrderCRUD().GetOrders().Where(x => x.JobId == jobId).ToList();

                if (orders.Count > 0)
                {
                    foreach (Order order in orders)
                    {
                        order.JobId = 0;
                        new OrderCRUD().Update(order);
                    }
                }

                // remove invoices
                List <Invoice> invoices = new InvoiceCRUD().GetInvoicesByJobId(jobId);

                if (invoices.Count > 0)
                {
                    foreach (Invoice invoice in invoices)
                    {
                        invoice.JobId = 0;
                        new InvoiceCRUD().Update(invoice);
                    }
                }

                // remove work periods
                List <WorkPeriod> workPeriods = new WorkPeriodCRUD().GetWorkPeriodsByJobId(jobId);

                if (workPeriods.Count > 0)
                {
                    foreach (WorkPeriod workPeriod in workPeriods)
                    {
                        workPeriod.JobId = 0;
                        new WorkPeriodCRUD().Update(workPeriod);
                    }
                }
            }

            return(result);
        }