예제 #1
0
        public ActionResult Edit(List <PriceEditViewModel> model, string redirectUrl)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}

            foreach (var item in model)
            {
                if (item.Price.PriceId == 0)
                {
                    Prices price = new Prices()
                    {
                        Value      = item.Price.Value,
                        FromDate   = item.EditFromDate,
                        ServicesId = item.ServicesId,
                        ToDate     = null,
                    };
                    Price.Create(price);
                }
                else
                {
                    Prices price = new Prices();
                    var    PREV  = (from s in context.Services
                                    .Include("Types")
                                    .Include("Units")
                                    select(new ConfirmEdit {
                        ServicesId = s.ServicesId, Name = s.Name, Prices = s.Prices.Where(p => p.FromDate < item.EditFromDate && (p.ToDate == null || p.ToDate > item.EditFromDate)).OrderBy(p => p.FromDate).FirstOrDefault()
                    })).Where(s => s.ServicesId == item.ServicesId).ToList();
                    var NEXT = (from s in context.Services
                                .Include("Types")
                                .Include("Units")
                                select(new ConfirmEdit {
                        ServicesId = s.ServicesId, Name = s.Name, Prices = s.Prices.Where(p => p.FromDate > item.EditFromDate && (p.ToDate == null || p.ToDate > item.EditFromDate)).FirstOrDefault()
                    })).Where(s => s.ServicesId == item.ServicesId).ToList();
                    if (PREV[0].Prices != null)
                    {
                        Prices prev = Price.GetById(PREV[0].Prices.PriceId);
                        prev.ToDate = item.EditFromDate;
                        Price.Update(prev);
                    }
                    if (NEXT[0].Prices != null)
                    {
                        Prices next = Price.GetById(NEXT[0].Prices.PriceId);
                        price.ToDate = next.FromDate;
                    }

                    price.Value      = item.Price.Value;
                    price.FromDate   = item.EditFromDate;
                    price.ServicesId = item.ServicesId;
                    Price.Create(price);
                }
            }
            return(RedirectToLocal(redirectUrl));
        }