public void SaveAndGenerateReoccuring(ReoccuringItem reoccuringItem) { if (reoccuringItem.ReoccuringItemID > 0) { ReoccuringItemRepo.Update(reoccuringItem); } else { ReoccuringItemRepo.Add(reoccuringItem); } ReoccuringItemRepo.SaveChanges(); var existingItems = ItemRepo.GetMany(x => x.ReoccuringItemID == reoccuringItem.ReoccuringItemID); foreach (var delItem in existingItems) { ItemRepo.Delete(delItem); } //generate new items var currentDate = reoccuringItem.StartDate; while (currentDate < reoccuringItem.EndDate) { //add to db var item = new Item() { ReoccuringItemID = reoccuringItem.ReoccuringItemID, CategoryID = reoccuringItem.CategoryID, BudgetID = reoccuringItem.BudgetID, ItemName = reoccuringItem.Name, Cost = reoccuringItem.ReoccuringCost, PurchaseDate = currentDate }; if (reoccuringItem.ReoccuringUnit == ReoccuringItem.eReoccuringUnit.Month) { currentDate = currentDate.AddMonths(reoccuringItem.ReoccuringRate); } else { currentDate = currentDate.AddDays(reoccuringItem.ReoccuringRate * 7); } ItemRepo.Add(item); } ItemRepo.SaveChanges(); }
public JsonResult SaveReoccuringItem(ReoccuringItem reoccuringItem) { var errors = new List <string>(); if (ModelState.IsValid) { BudgetService.SaveAndGenerateReoccuring(reoccuringItem); } else { errors = ModelStateErrors(); } return(Json(new { Errors = errors })); }