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); }
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); }