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); } }
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)); }