Пример #1
0
        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 }));
        }