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 ActionResult Create(CreateClientDayViewModel model) { try { var date = ParshaWeek.GetDateFromPharsha(model.Day, model.Parsha, model.Year); var dateTime = new DateTime(date.Year, date.Month, date.Day, model.StartTime.Hours, model.StartTime.Minutes, 00); var clientDay = new ClientDay(dateTime, model.EndTime, model.ClientId, model.BreakDown, model.PriceId); db.ClientBalances.Find(clientDay.ClientId).Add(clientDay.Price); db.SaveChanges(); return(RedirectToAction("Create", "ClientWeeks", clientDay)); } catch (Exception e) { return(Json(e.Message)); } }