예제 #1
0
        public bool PriceDesc_Clone(int id, int?courtId)
        {
            try
            {
                var sourcePrice = repo.AllReadonly <PriceDesc>().Where(x => x.Id == id).Include(x => x.PriceCols).Include(x => x.PriceCols.Select(v => v.PriceVals)).FirstOrDefault();
                var price       = new PriceDesc()
                {
                    CourtId  = courtId,
                    Keyword  = sourcePrice.Keyword,
                    Name     = sourcePrice.Name,
                    DateFrom = sourcePrice.DateFrom,
                    DateTo   = sourcePrice.DateTo
                };

                foreach (var col in sourcePrice.PriceCols.OrderBy(x => x.OrderBy))
                {
                    var _col = new PriceCol()
                    {
                        Name    = col.Name,
                        ColType = col.ColType,
                        ColNo   = col.ColNo,
                        Active  = col.Active
                    };

                    foreach (var val in col.PriceVals)
                    {
                        var _val = new PriceVal()
                        {
                            RowNo = val.RowNo,
                            Value = val.Value,
                            Text  = val.Text
                        };
                        _col.PriceVals.Add(_val);
                    }

                    price.PriceCols.Add(_col);
                }


                repo.Add <PriceDesc>(price);
                repo.SaveChanges();
                foreach (var col in price.PriceCols)
                {
                    col.OrderBy = col.Id;
                    repo.Update <PriceCol>(col);
                    repo.SaveChanges();
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #2
0
        public IActionResult PriceVal(int priceDesc, int showRows = 0, int insertAt = -1, int removeAt = -1)
        {
            var vals = service.PriceVal_Select(priceDesc);
            var cols = service.PriceCol_Select(priceDesc).ToList();

            var maxRow = 1;

            if (vals.Count() > 0)
            {
                maxRow = vals.Max(x => x.RowNo);
            }

            if (showRows > 0)
            {
                maxRow = showRows;
            }
            if (insertAt >= 0)
            {
                maxRow++;
            }
            if (removeAt >= 0)
            {
                maxRow--;
            }

            List <PriceVal> model = new List <PriceVal>();

            for (int row = 1; row <= maxRow; row++)
            {
                var currentRow = row;
                if (insertAt > 0 && insertAt < row)
                {
                    currentRow--;
                }
                if (removeAt > 0 && removeAt <= row)
                {
                    currentRow++;
                }
                foreach (var col in cols)
                {
                    var _val = new PriceVal()
                    {
                        PriceDescId = priceDesc,
                        RowNo       = row,
                        PriceColId  = col.Id
                    };

                    if (insertAt != row)
                    {
                        var saved = vals.FirstOrDefault(x => x.RowNo == currentRow && x.PriceColId == col.Id);
                        if (saved != null)
                        {
                            _val.Value = saved.Value;
                            _val.Text  = saved.Text;
                        }
                    }
                    model.Add(_val);
                }
            }

            if (insertAt > 0 || removeAt > 0)
            {
                service.PriceVal_SaveData(priceDesc, model);
                return(RedirectToAction(this.ActionName, new { pricedesc_id = priceDesc }));
            }

            var price = service.GetById <PriceDesc>(priceDesc);

            ViewBag.price  = price;
            ViewBag.cols   = cols;
            ViewBag.maxRow = maxRow;
            List <BreadcrumbsVM> breadcrumbs = new List <BreadcrumbsVM>()
            {
                new BreadcrumbsVM()
                {
                    Title = price.Name,
                    Href  = Url.Action(nameof(PriceDesc), new{ courtId = price.CourtId })
                },
                new BreadcrumbsVM()
                {
                    Title = "Колони",
                    Href  = Url.Action(nameof(PriceCol), new{ priceDesc = price.Id })
                }
            };

            ViewBag.breadcrumbs = breadcrumbs;
            return(View(model));
        }