public JsonResult Create(Payment payment, string type, CreditCardCharge cardCharge, TPCheck tPCheck) { payment.PaymentDate = DateTime.Now; payment.PaymentType = (PaymentType)Enum.Parse(typeof(PaymentType), type); db.Payments.Add(payment); db.SaveChanges(); if (payment.PaymentType == PaymentType.CreditCard) { cardCharge.PaymentId = payment.Id; db.CreditCardCharges.Add(cardCharge); db.SaveChanges(); } else if (payment.PaymentType == PaymentType.Check) { tPCheck.PaymentId = payment.Id; db.TPChecks.Add(tPCheck); db.SaveChanges(); } var clientId = payment.ClientId; var amount = payment.Amount; var clientBalance = db.ClientBalances.Find(clientId); clientBalance.Subtract(amount); Invoice.SubtractIB(amount, clientId); ClientWeek.SubtractBD(amount, clientId); db.SaveChanges(); return(Json(new { Amount = payment.Amount })); }
public void Delete(int id) { Payment payment = db.Payments.Find(id); db.Payments.Remove(payment); db.ClientBalances.Find(payment.ClientId).Add(payment.Amount); db.SaveChanges(); ClientWeek.AddBD(payment.Amount, payment.ClientId); }
public ActionResult WeekEntry(DateTime weekStart) { OneWeekModel model = new OneWeekModel(); ViewBag.AllowDuplicates = ConfigurationManager.AppSettings["AllowDuplicate"] == "1"; //Add the start/End days Tuple <DateTime, DateTime> dates = Utilities.GetWeekStartEndDates(_EndDay, weekStart); model.WeekStart = dates.Item1; model.WeekEnd = dates.Item2; using (TimeLineDB db = new TimeLineDB()) { List <TimeLineModel> lines = db.TimeLines.Where(x => x.UserID == User.Identity.Name) .Where(x => x.LineDate >= dates.Item1) .Where(x => x.LineDate <= dates.Item2) .ToList(); model.IsApproved = lines.Count(x => x.DateApproved == null) == 0 && lines.Count > 0; model.IsSubmitted = lines.Count(x => x.DateSubmitted == null) == 0 && lines.Count > 0; IEnumerable <string> clients = lines.Select(x => x.ClientID).Distinct(); foreach (string clientID in clients) { ClientWeek week = new ClientWeek(); var temp = db.Clients.Where(x => x.Name_Key == clientID).FirstOrDefault(); week.Client = temp; week.Hours = new Dictionary <int, decimal>(); for (int i = 0; i < 7; i++) { decimal dayHours = lines.Where(x => x.ClientID == clientID).Where(x => x.LineDate == weekStart.AddDays(i)).Sum(x => (x.Hours)); week.Hours.Add(i, dayHours); } model.Clients.Add(week); } } model.Clients = model.Clients.OrderBy(x => x.Client.sort_name).ToList(); IEnumerable <SelectListItem> items = from client in GetClients() where !(model.Clients.Any(x => x.Client.Name_Key == client.Value)) select new SelectListItem { Text = client.Text, Value = client.Value }; model.NewClients = items; return(View("WeekEntry", model)); }
public ActionResult Create(ClientDay day) { try { var weekStart = day.StartTime.AddDays(-(int)day.StartTime.DayOfWeek).Date; var clientId = day.ClientId; var weeks = db.ClientWeeks.Include(w => w.Days).AsEnumerable().Where(w => w.ClientId == clientId && w.StartDate.AddDays(-(int)w.StartDate.DayOfWeek) == weekStart); var week = weeks.SingleOrDefault(w => w.Billed == false); if (week == null) { var parsha = db.ParshaWeeks.SingleOrDefault(p => p.StartDate == weekStart); if (parsha == null) { var newParsha = new ParshaWeek(weekStart); db.ParshaWeeks.Add(newParsha); db.SaveChanges(); parsha = newParsha; } var newWeek = new ClientWeek(clientId, day.StartTime) { ParshaId = parsha.id }; if (weeks.Count() > 0) { newWeek.StartDate = day.StartTime.Date; foreach (var w in weeks) { w.EndDate = w.Days.LastOrDefault().StartTime; } } db.ClientWeeks.Add(newWeek); db.SaveChanges(); week = newWeek; } day.WeekId = week.Id; db.ClientDays.Add(day); db.SaveChanges(); week.SetBalanceDue(); db.SaveChanges(); return(Json("", JsonRequestBehavior.AllowGet)); } catch (Exception e) { return(Json(e.Message, JsonRequestBehavior.AllowGet)); } }
public JsonResult Edit(Payment payment, string type, CreditCardCharge cardCharge, TPCheck tPCheck) { var clientId = payment.ClientId; var oldPayment = db.Payments.Find(payment.Id); if (payment.Amount > oldPayment.Amount) { db.ClientBalances.Find(clientId).Subtract(payment.Amount - oldPayment.Amount); ClientWeek.SubtractBD(payment.Amount - oldPayment.Amount, clientId); } else if (payment.Amount < oldPayment.Amount) { db.ClientBalances.Find(clientId).Add(oldPayment.Amount - payment.Amount); ClientWeek.AddBD(oldPayment.Amount - payment.Amount, clientId); } payment.PaymentType = (PaymentType)Enum.Parse(typeof(PaymentType), type); db.Set <Payment>().AddOrUpdate(payment); db.SaveChanges(); if (payment.PaymentType == PaymentType.CreditCard) { cardCharge.PaymentId = payment.Id; db.Set <CreditCardCharge>().AddOrUpdate(cardCharge); db.SaveChanges(); var charge = db.CreditCardCharges.Include(c => c.Card).SingleOrDefault(c => c.PaymentId == payment.Id); var card = db.CreditCards.Find(charge.CardId); return(Json(new { Id = payment.Id, PaymentDate = payment.PaymentDate, Amount = payment.Amount, PaymentType = payment.PaymentType, Name = card.Name, CardEnding = card.CardNumber.Substring(card.CardNumber.Length - 4), Location = charge.Location })); } else if (payment.PaymentType == PaymentType.Check) { tPCheck.PaymentId = payment.Id; db.Set <TPCheck>().AddOrUpdate(tPCheck); db.SaveChanges(); var check = db.TPChecks.Find(payment.Id); return(Json(new { Id = payment.Id, PaymentDate = payment.PaymentDate, Amount = payment.Amount, PaymentType = payment.PaymentType, Memo = check.Memo })); } return(Json(payment)); }