public static IEnumerable <ServiceModel> GetBillServicesBySalonId(int salonId, int day = 1) { using (var db = new Solution30ShineContext()) { string sql = string.Format(@"declare @now datetime, @yesterday datetime; set @now = GETDATE() set @yesterday = DATEADD(day,-{0}, @now) select f.ServiceId as ServiceId, count(f.ServiceId) as Quantity from BillServiceHis as s inner join FlowService as f on s.Id = f.BillId where s.CompleteBillTime > @yesterday and s.CompleteBillTime < @now and s.IsDelete = 0 and f.IsDelete = 0 and s.SalonId = {1} group by f.ServiceId", day, salonId); db.Database.OpenConnection(); var command = db.Database.GetDbConnection().CreateCommand(); command.CommandText = sql; var reader = command.ExecuteReader(); while (reader.Read()) { yield return(new ServiceModel(reader["ServiceId"].Cast <int>(), reader["Quantity"].Cast <int>())); } reader.Close(); reader.Dispose(); command.Dispose(); } }
public async static System.Threading.Tasks.Task GetAsync() { using (var db = new Solution30ShineContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var init = "delete from Tbl_Config where [Key] = 'order_device_category'\n"; var data = db.TblConfig.Where(m => m.Key.Equals("order_device_category")).ToList().Select(m => { return($"insert into Tbl_Config([Label],[Description],[Key],[Value],[IsDelete],[Status]) values (N'{m.Label}','{m.Description}','{m.Key}','{m.Value}',0,1)\n"); }); foreach (var item in data) { init += item; } await transaction.RollbackAsync(); } catch (Exception ex) { await transaction.RollbackAsync(); } } } }
public static void XemSQL() { using (var db = new Solution30ShineContext()) { var aa = DateTime.Today.DayOfWeek; var data = (from a in db.FlowTimeKeeping join b in db.StaffType on a.Type equals b.Id join c in db.Staff on a.StaffId equals c.Id join d in db.TblSalon on a.SalonId equals d.Id where a.Type == 4 && !d.ShortName.Equals("Salontest") select new { a.StaffId, c.Fullname, d.ShortName, a.WorkDate, a.NumberOfWorkHourBasic, a.NumberOfWorkHourOver, a.NumberOfWorkHour }); var sql = data.ToSql(); } }
public static IEnumerable <IvGroupQuantifyProductV2> TestGroupBy() { using (var db = new Solution30ShineContext()) { var data = db.IvGroupQuantifyProductV2.ToLookup(m => m.GroupQuantifyId); foreach (var item in data) { foreach (var subitem in item) { yield return(subitem); } } } }
public async static Task Test(int inventoryId = 3, int billCount = 100) { using (var db = new Solution30ShineContext()) { using (var transaction = db.Database.BeginTransaction()) { try { await Handler(db, inventoryId, billCount); await transaction.CommitAsync(); } catch (Exception ex) { await transaction.RollbackAsync(); } } } }
public async static Task <bool> TestQuantitySupplies() { using (var db = new Solution30ShineContext()) { using (var transaction = db.Database.BeginTransaction()) { try { await HandlerTest(db); await transaction.RollbackAsync(); return(true); } catch (Exception ex) { await transaction.RollbackAsync(); return(false); } } } }
private async static Task Handler(Solution30ShineContext db, int inventoryId, int billCount) { var inventory = db.IvInventory.Find(inventoryId); var serviceQuantifies = db.IvServiceQuantifyV2.ToList(); var groupQuantifies = db.IvGroupQuantifyV2.ToList(); var groupProductQuantifies = db.IvGroupQuantifyProductV2.ToList(); var productQuanifies = db.IvProductQuantifyV2.ToList(); var distinctProducts = productQuanifies.GetProductId().ToList(); var distinctServiceIds = serviceQuantifies.GetServiceID().ToList(); #region Delete string notebillServiceHis = "bill de test daint"; int idBillServiceHisRange = 10000000; //====================================================== var billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.Id >= idBillServiceHisRange && m.IsDelete == 0).ToList(); db.BillServiceHis.RemoveRange(billServiceHisSearch); db.SaveChanges(); var flows = db.FlowService.Where(m => m.BillId >= 10000000).ToArray(); db.FlowService.RemoveRange(flows); db.SaveChanges(); //---------------------- //var ivCu = db.IvInventoryCurrent.Where(m => m.InventoryId == inventory.Id && m.IsDelete == false).ToList(); //db.IvInventoryCurrent.RemoveRange(ivCu); //db.SaveChanges(); ////---------------------- //var ivMaxProductInventoryNorms = db.IvMaxServiceInventoryNorms.Where(m => m.IsDelete == false && m.InventoryId == inventoryId).ToList(); //// mock MaxProductInventoryNorms //db.IvMaxServiceInventoryNorms.RemoveRange(ivMaxProductInventoryNorms); //db.SaveChanges(); #endregion #region Add #region billservicehis for (int i = 0; i < billCount; i++) { db.BillServiceHis.Add(new BillServiceHis() { Id = 10000000 + i, SalonId = inventory.SalonId, CompleteBillTime = DateTime.Now.AddHours(-(2)), ImageChecked1 = notebillServiceHis, IsDelete = 0 }); } var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } #endregion #region flow service billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.SalonId == inventory.SalonId && m.Id >= idBillServiceHisRange && m.IsDelete == 0).ToList(); foreach (var item in billServiceHisSearch) { db.FlowService.Add(new FlowService() { BillId = item.Id, ServiceId = 53, IsDelete = 0 }); } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } #endregion //#region inventoryCurrent //foreach (var item in distinctProducts) //{ // db.IvInventoryCurrent.Add(new IvInventoryCurrent() // { // InventoryId = inventory.Id, // ProductId = (int)item, // AccountingDate = DateTime.Now.Date, // Begin = 3, // Import = 1, // Export = 2, // SellOrUse = 0, // IsDelete = false, // VolumeRemain = 0 // }); //} //db.SaveChanges(); //#endregion //#region inventoryNorm //foreach (var item in distinctProducts) //{ // db.IvMaxServiceInventoryNorms.Add(new IvMaxServiceInventoryNorms() // { // InventoryId = inventory.Id, // ProductId = (int)item, // Date = DateTime.Now.Date, // MaxInventorySugges = 10, // SafeInventorySugges = 3, // IsDelete = false // }); //} //db.SaveChanges(); //#endregion #endregion }
public async static Task DeleteData() { using (var db = new Solution30ShineContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var products = db.Product.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(10).ToList(); var services = db.Service.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(2).ToList(); var salonIdcho = db.IvInventory.FirstOrDefault(n => n.Type == 2).SalonId; var salonId = db.TblSalon.FirstOrDefault(m => salonIdcho == m.Id).Id; var productModels = ProductModel.GetMock(); var inventory = db.IvInventory.FirstOrDefault(m => m.SalonId == salonId); var inventoryId = inventory.Id; var inventoryPartnerId = inventory.ParentId; // var productChosen = db.IvQuantifyChosen.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId)).ToList(); db.IvQuantifyChosen.RemoveRange(productChosen); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var ivCu = db.IvInventoryCurrent.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId) && m.InventoryId == inventoryId && m.IsDelete == false && m.CreatedDate == DateTime.UtcNow.Date).ToList(); // mock QuantifyChosen db.IvInventoryCurrent.RemoveRange(ivCu); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var productQuantifyGroup = db.IvGroupQuantifyProductV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductQuantifyId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var productQuantifies = db.IvProductQuantifyV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); db.IvProductQuantifyV2.RemoveRange(productQuantifies); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var serviceQuantifies = db.IvServiceQuantifyV2.Where(m => m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0 & services.Select(m => m.Id).ToList().Contains((int)m.ServiceId)).ToList(); db.IvServiceQuantifyV2.RemoveRange(serviceQuantifies); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } string groupQuantifyTest = "group quantify daint test "; var groupQuantifies = db.IvGroupQuantifyV2.Where(m => m.IsDelete == 0 && m.GroupName.Contains(groupQuantifyTest) && m.CreatedDate == DateTime.UtcNow.Date).ToList(); db.IvGroupQuantifyV2.RemoveRange(groupQuantifies); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } string notebillServiceHis = "bill de test daint"; //====================================================== var billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.SalonId == salonId && m.IsDelete == 0).ToList(); var flowServicesSearch = db.FlowService.Where(m => billServiceHisSearch.Select(m => m.Id).ToList().Contains((int)m.BillId)).ToList(); //-- if (billServiceHisSearch.Any()) { db.FlowService.RemoveRange(flowServicesSearch); db.BillServiceHis.RemoveRange(billServiceHisSearch); db.SaveChanges(); } await transaction.CommitAsync(); } catch (Exception ex) { await transaction.RollbackAsync(); } } } }
private async static Task HandlerTest(Solution30ShineContext db) { bool step1 = true, step2 = true, step3 = true; var products = db.Product.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(10).ToList(); var services = db.Service.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(2).ToList(); var salonIdcho = db.IvInventory.FirstOrDefault(n => n.Type == 2).SalonId; var salonId = db.TblSalon.FirstOrDefault(m => salonIdcho == m.Id).Id; var productModels = ProductModel.GetMock(); var inventory = db.IvInventory.FirstOrDefault(m => m.SalonId == salonId); var inventoryId = inventory.Id; var inventoryPartnerId = inventory.ParentId; if (step1) { #region Step 1 // create data BillServiceHis and FlowService string notebillServiceHis = "bill de test daint"; //====================================================== var billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.SalonId == salonId).ToList(); //-- db.BillServiceHis.RemoveRange(billServiceHisSearch); db.SaveChanges(); //-- for (int i = 0; i < 5; i++) { db.BillServiceHis.Add(new BillServiceHis() { Id = 10000000 + i, SalonId = salonId, CompleteBillTime = DateTime.Now.AddHours(-(i)), ImageChecked1 = notebillServiceHis, IsDelete = 0 }); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.IsDelete == 0 && m.SalonId == salonId).ToList(); //---------------------------------------------------------------------------------------------------------------------------------------------- foreach (var item in billServiceHisSearch) { db.FlowService.Add(new FlowService() { BillId = item.Id, ServiceId = services[0].Id, IsDelete = 0 }); db.FlowService.Add(new FlowService() { BillId = item.Id, ServiceId = services[1].Id, IsDelete = 0 }); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } //---------------------------------------- var today = DateTime.Now; var yesterday = today.AddDays(-(1)); var billservices = from s in db.BillServiceHis join f in db.FlowService on s.Id equals f.BillId where s.IsDelete == 0 && f.IsDelete == 0 && s.SalonId == salonId && s.CompleteBillTime > yesterday && s.CompleteBillTime <= today select f; var servicesGroup = from s in billservices group s by s.ServiceId; var models = servicesGroup.Select(m => new ServiceModel(m.Key.GetValueOrDefault(), m.Count())).ToList(); if (ServiceModel.Compare(models) == false) { throw new Exception("part 1 fail"); } // ------------------------------------------------------------------------------------------------------------------- #endregion } if (step2) { #region Step 2 string groupQuantifyTest = "group daint test "; var servicesInput = ServiceModel.ModelMock; // mock group quantify db.IvGroupQuantifyV2.RemoveRange(db.IvGroupQuantifyV2.ToList()); db.SaveChanges(); for (int i = 1; i <= 5; i++) { db.IvGroupQuantifyV2.Add(new IvGroupQuantifyV2() { IsDelete = 0, GroupName = groupQuantifyTest + i, }); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } // mock service quantify var groupQuantifies = db.IvGroupQuantifyV2.Where(m => m.IsDelete == 0 && m.GroupName.Contains(groupQuantifyTest)).ToList(); // db.IvServiceQuantifyV2.RemoveRange(db.IvServiceQuantifyV2.ToList()); db.SaveChanges(); foreach (var item in services) { foreach (var subitem in groupQuantifies) { db.IvServiceQuantifyV2.Add(new IvServiceQuantifyV2() { GroupQuantifyId = subitem.Id, IsDelete = 0, ServiceId = item.Id }); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } } var serviceQuantifies = db.IvServiceQuantifyV2.Where(m => m.IsDelete == 0 & services.Select(m => m.Id).ToList().Contains((int)m.ServiceId)).ToList(); // mock product quantify db.IvProductQuantifyV2.RemoveRange(db.IvProductQuantifyV2.ToList()); db.SaveChanges(); List <IvProductQuantifyV2> mo = new List <IvProductQuantifyV2>(); foreach (var product in products) { mo.Add(new IvProductQuantifyV2() { ProductId = product.Id, Volume = 3, Quantify = 1, IsBase = 0, IsDelete = 0, CreatedDate = DateTime.UtcNow.Date }); } for (int i = 0; i < products.Count; i = i + 2) { mo[i].IsBase = 1; } db.IvProductQuantifyV2.AddRange(mo); db.SaveChanges(); // var productQuantifies = db.IvProductQuantifyV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); // mock group quantify product int ii = 0; db.IvGroupQuantifyProductV2.RemoveRange(db.IvGroupQuantifyProductV2.ToList()); db.SaveChanges(); foreach (var groupQuantify in groupQuantifies) { if (products.Count >= ii + 2) { db.IvGroupQuantifyProductV2.Add(new IvGroupQuantifyProductV2() { IsDelete = 0, GroupQuantifyId = groupQuantify.Id, CreatedDate = DateTime.UtcNow.Date, ProductQuantifyId = products[ii++].Id }); db.IvGroupQuantifyProductV2.Add(new IvGroupQuantifyProductV2() { IsDelete = 0, GroupQuantifyId = groupQuantify.Id, CreatedDate = DateTime.UtcNow.Date, ProductQuantifyId = products[ii++].Id }); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } } var productQuantifyGroup = db.IvGroupQuantifyProductV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductQuantifyId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); // mock inventory current var ivCu = db.IvInventoryCurrent.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId) && m.IsDelete == false).ToList(); if (ivCu?.Any() == true) { db.IvInventoryCurrent.RemoveRange(ivCu); var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } ii = 0; var modelMock = InventoryCurrentMock.GetData(); if (modelMock.Count == products.Count) { foreach (var product in products) { db.IvInventoryCurrent.Add(new IvInventoryCurrent() { InventoryId = inventoryId, ProductId = product.Id, Begin = modelMock[ii].Begin, SellOrUse = modelMock[ii].SellOrUse, Import = modelMock[ii].Import, Export = modelMock[ii].Export, CreatedDate = DateTime.UtcNow.Date, IsDelete = false }); ii++; var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } } ivCu = db.IvInventoryCurrent.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId) && m.InventoryId == inventoryId && m.IsDelete == false && m.CreatedDate == DateTime.UtcNow.Date).ToList(); // mock QuantifyChosen //foreach (var product in products) //{ // db.IvQuantifyChosen.Add(new IvQuantifyChosen() // { // ProductId = product.Id // }); // var res = db.SaveChanges(); // if (res <= 0) // { // throw new Exception(); // } //} var productChosen = db.IvQuantifyChosen.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId)).ToList(); //----------------------------------------------------------------------------------------------------------------------------- var productModelsmock = new List <ProductModel>(); foreach (var item in servicesInput) { var productsOfService = from sq in db.IvServiceQuantifyV2 join gqp in db.IvGroupQuantifyProductV2 on sq.GroupQuantifyId equals gqp.GroupQuantifyId join pq in db.IvProductQuantifyV2 on gqp.ProductQuantifyId equals pq.ProductId join ivc in db.IvInventoryCurrent on pq.ProductId equals ivc.ProductId join qc in db.IvQuantifyChosen on pq.ProductId equals qc.ProductId into gj from qc in gj.DefaultIfEmpty() where sq.ServiceId == item.ServiceId && sq.IsDelete == 0 && gqp.IsDelete == 0 && pq.IsDelete == 0 && ivc.IsDelete == false && ivc.InventoryId == inventoryId select new ProductModel { SellOrUse = ivc.SellOrUse, Begin = ivc.Begin, Export = ivc.Export, Import = ivc.Import, ProductId = ivc.ProductId, Quantify = pq.Quantify, Volume = pq.Volume, ServiceUsedCount = item.Quantity, ProductIdChosen = qc == null ? default(int?) : qc.ProductId, IsBase = pq.IsBase == 1, GroupQuantityId = sq.GroupQuantifyId, }; productModelsmock.AddRange(productsOfService.ToArray()); } #endregion productModels = productModelsmock; } if (step3) { #region step 3 var ivMaxProductInventoryNorms = db.IvMaxServiceInventoryNorms.Where(m => m.IsDelete == false && m.InventoryId == inventoryId).ToList(); // mock MaxProductInventoryNorms db.IvMaxServiceInventoryNorms.RemoveRange(ivMaxProductInventoryNorms); db.SaveChanges(); foreach (var product in products) { db.IvMaxServiceInventoryNorms.Add(new IvMaxServiceInventoryNorms() { InventoryId = inventoryId, ProductId = product.Id, MaxInventorySugges = 50, CreatedDate = DateTime.UtcNow.Date, SafeInventorySugges = 3 }); db.SaveChanges(); } ivMaxProductInventoryNorms = db.IvMaxServiceInventoryNorms.Where(m => m.IsDelete == false && m.InventoryId == inventoryId).ToList(); // var order = new OrderModel() { Code = Common.GenBillCode(inventory.ParentId, "OD", DateTime.Now), CosmeticType = EnumDefine.CosmeticType.Supply, InventoryOrderId = inventory.ParentId, isAuto = 1,//đơn hàng xuất tự động InventoryPartnerId = inventoryPartnerId, OrderType = EnumDefine.OrderType.Export, Status = EnumDefine.OrderStatusType.Ordered, }; for (int i = 0; i < productModels.Count; i++) { var productModel = productModels[i]; if (productModel.ProductIdChosen.HasValue) { productModel = productModels.FirstOrDefault(m => m.ProductId == productModel.ProductIdChosen && productModel.GroupQuantityId == m.GroupQuantityId); } else { productModel = productModels.FirstOrDefault(m => m.IsBase && productModel.GroupQuantityId == m.GroupQuantityId); if (productModel == null) { productModel = productModels[i]; } } if (productModel != null) { var ivMaxProductInventoryNorm = ivMaxProductInventoryNorms.FirstOrDefault(m => m.ProductId == productModel.ProductId); if (ivMaxProductInventoryNorm != null && ivMaxProductInventoryNorm.MaxInventorySugges > 0 && ivMaxProductInventoryNorm.SafeInventorySugges.GetValueOrDefault() > 0) { // nếu tồn tự động tính < tồn an toàn if (productModel.InventoryRemainComputed < ivMaxProductInventoryNorm.SafeInventorySugges) { var supply = new OrderDetailModel() { ProductId = (int)productModel.ProductId, QuantitySuggest = (int?)(ivMaxProductInventoryNorm.MaxInventorySugges - productModel.InventoryRemainComputed.Value), QuantityOrder = (int)(ivMaxProductInventoryNorm.MaxInventorySugges - productModel.InventoryRemainComputed.Value), }; order.AddSupply(supply); } } } } #endregion } }
public async static Task InitData() { using (var db = new Solution30ShineContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var products = db.Product.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(10).ToList(); var services = db.Service.Where(m => m.IsDelete == 0).OrderBy(m => m.Id).Take(2).ToList(); var salonIdcho = db.IvInventory.FirstOrDefault(n => n.Type == 2).SalonId; var salonId = db.TblSalon.FirstOrDefault(m => salonIdcho == m.Id).Id; var productModels = ProductModel.GetMock(); var inventory = db.IvInventory.FirstOrDefault(m => m.SalonId == salonId); var inventoryId = inventory.Id; var inventoryPartnerId = inventory.ParentId; #region Step 1 // create data BillServiceHis and FlowService string notebillServiceHis = "bill de test daint"; //====================================================== var billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.SalonId == salonId && m.IsDelete == 0).ToList(); //-- if (billServiceHisSearch.Any()) { db.BillServiceHis.RemoveRange(billServiceHisSearch); db.SaveChanges(); } for (int i = 0; i < 5; i++) { db.BillServiceHis.Add(new BillServiceHis() { Id = 10000000 + i, SalonId = salonId, CompleteBillTime = DateTime.Now.AddHours(-(i)), ImageChecked1 = notebillServiceHis, IsDelete = 0, CreatedDate = DateTime.UtcNow.Date }); } var res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } billServiceHisSearch = db.BillServiceHis.Where(m => m.ImageChecked1.Equals(notebillServiceHis) && m.IsDelete == 0 && m.SalonId == salonId && m.CreatedDate == DateTime.UtcNow.Date).ToList(); //---------------------------------------------------------------------------------------------------------------------------------------------- foreach (var item in billServiceHisSearch) { db.FlowService.Add(new FlowService() { BillId = item.Id, ServiceId = services[0].Id, IsDelete = 0, CreatedDate = DateTime.UtcNow.Date }); db.FlowService.Add(new FlowService() { BillId = item.Id, ServiceId = services[1].Id, IsDelete = 0, CreatedDate = DateTime.UtcNow.Date }); } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } #endregion #region Step 2 string groupQuantifyTest = "group quantify daint test "; // mock group quantify db.IvGroupQuantifyV2.RemoveRange(db.IvGroupQuantifyV2.ToList()); db.SaveChanges(); for (int i = 1; i <= 5; i++) { db.IvGroupQuantifyV2.Add(new IvGroupQuantifyV2() { IsDelete = 0, GroupName = groupQuantifyTest + i, CreatedDate = DateTime.UtcNow.Date }); } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } // mock service quantify var groupQuantifies = db.IvGroupQuantifyV2.Where(m => m.IsDelete == 0 && m.GroupName.Contains(groupQuantifyTest) && m.CreatedDate == DateTime.UtcNow.Date).ToList(); // db.IvServiceQuantifyV2.RemoveRange(db.IvServiceQuantifyV2.ToList()); db.SaveChanges(); foreach (var item in services) { foreach (var subitem in groupQuantifies) { db.IvServiceQuantifyV2.Add(new IvServiceQuantifyV2() { GroupQuantifyId = subitem.Id, IsDelete = 0, ServiceId = item.Id, CreatedDate = DateTime.UtcNow.Date }); } } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var serviceQuantifies = db.IvServiceQuantifyV2.Where(m => m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0 & services.Select(m => m.Id).ToList().Contains((int)m.ServiceId)).ToList(); // mock product quantify db.IvProductQuantifyV2.RemoveRange(db.IvProductQuantifyV2.ToList()); db.SaveChanges(); List <IvProductQuantifyV2> mo = new List <IvProductQuantifyV2>(); foreach (var product in products) { mo.Add(new IvProductQuantifyV2() { ProductId = product.Id, Volume = 3, Quantify = 1, IsBase = 0, IsDelete = 0, CreatedDate = DateTime.UtcNow.Date, ConsumptionType = 4 }); } for (int i = 0; i < products.Count; i = i + 2) { mo[i].IsBase = 1; } db.IvProductQuantifyV2.AddRange(mo); db.SaveChanges(); // var productQuantifies = db.IvProductQuantifyV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); // mock group quantify product int ii = 0; db.IvGroupQuantifyProductV2.RemoveRange(db.IvGroupQuantifyProductV2.ToList()); db.SaveChanges(); foreach (var groupQuantify in groupQuantifies) { if (products.Count >= ii + 2) { db.IvGroupQuantifyProductV2.Add(new IvGroupQuantifyProductV2() { IsDelete = 0, GroupQuantifyId = groupQuantify.Id, CreatedDate = DateTime.UtcNow.Date, ProductQuantifyId = products[ii++].Id }); db.IvGroupQuantifyProductV2.Add(new IvGroupQuantifyProductV2() { IsDelete = 0, GroupQuantifyId = groupQuantify.Id, CreatedDate = DateTime.UtcNow.Date, ProductQuantifyId = products[ii++].Id }); } } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var productQuantifyGroup = db.IvGroupQuantifyProductV2.Where(m => products.Select(m => m.Id).ToList().Contains((int)m.ProductQuantifyId) && m.CreatedDate == DateTime.UtcNow.Date && m.IsDelete == 0).ToList(); // mock inventory current var ivCu = db.IvInventoryCurrent.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId) && m.IsDelete == false && m.InventoryId == inventoryId).ToList(); if (ivCu?.Any() == true) { db.IvInventoryCurrent.RemoveRange(ivCu); res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } ii = 0; var modelMock = InventoryCurrentMock.GetData(); if (modelMock.Count == products.Count) { foreach (var product in products) { db.IvInventoryCurrent.Add(new IvInventoryCurrent() { InventoryId = inventoryId, ProductId = product.Id, Begin = modelMock[ii].Begin, SellOrUse = modelMock[ii].SellOrUse, Import = modelMock[ii].Import, Export = modelMock[ii].Export, CreatedDate = DateTime.UtcNow.Date, IsDelete = false }); ii++; res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } } } ivCu = db.IvInventoryCurrent.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId) && m.InventoryId == inventoryId && m.IsDelete == false && m.CreatedDate == DateTime.UtcNow.Date).ToList(); db.IvQuantifyChosen.RemoveRange(db.IvQuantifyChosen.ToArray()); // mock QuantifyChosen foreach (var product in products) { db.IvQuantifyChosen.Add(new IvQuantifyChosen() { ProductId = product.Id }); } res = db.SaveChanges(); if (res <= 0) { throw new Exception(); } var productChosen = db.IvQuantifyChosen.Where(m => products.Select(m => m.Id).ToList().Contains(m.ProductId)).ToList(); //----------------------------------------------------------------------------------------------------------------------------- #endregion #region step 3 var ivMaxProductInventoryNorms = db.IvMaxServiceInventoryNorms.Where(m => m.IsDelete == false && m.InventoryId == inventoryId).ToList(); // mock MaxProductInventoryNorms db.IvMaxServiceInventoryNorms.RemoveRange(ivMaxProductInventoryNorms); db.SaveChanges(); foreach (var product in products) { db.IvMaxServiceInventoryNorms.Add(new IvMaxServiceInventoryNorms() { InventoryId = inventoryId, ProductId = product.Id, MaxInventorySugges = 50, CreatedDate = DateTime.UtcNow.Date, SafeInventorySugges = 3 }); db.SaveChanges(); } #endregion await transaction.CommitAsync(); } catch (Exception ex) { await transaction.RollbackAsync(); } } } }
public async static Task InitDataGoiYSlotChamCong(int salonId = 2, int bookingCount = 10) { using (var db = new Solution30ShineContext()) { var bookHourSubs = await db.BookHourSub.Where(m => m.SalonId == salonId && m.Publish == true && m.IsDelete == false).ToListAsync(); var bookHourSecondSubHours = await db.BookHour2ndSub.Where(m => m.SalonId == salonId && m.Publish == true && m.IsDelete == false).ToListAsync(); var dates = new List <DateTime>() { new DateTime(2021, 4, 21), new DateTime(2021, 4, 14), new DateTime(2021, 4, 7), new DateTime(2021, 3, 31) }; foreach (var date in dates) { foreach (var bookHourSub in bookHourSubs) { for (int i = 0; i < bookingCount; i++) { var booking = new Booking() { CustomerPhone = "0123123123", DatedBook = date, IsDelete = 0, SalonId = salonId, SubHour = bookHourSub.SubHourId }; db.Booking.Add(booking); db.SaveChanges(); var billService = new BillService() { IsDelete = 0, BookingId = booking.Id, SalonId = salonId, Pending = 0 }; db.BillService.Add(billService); db.SaveChanges(); var data = db.BookingSlotTotal.FirstOrDefault(m => m.IsDelete == false && m.WorkDate == date && m.SubHourId == bookHourSub.SubHourId && m.SalonId == salonId && m.GroupId == 0); if (data != null) { data.Total = 5; } else { var mo = new BookingSlotTotal() { Total = 5, GroupId = 0, WorkDate = date, HourFrame = TimeSpan.FromDays(1), SalonId = salonId, HourId = bookHourSub.HourId, IsDelete = false, StaffId = 0, SecondSubHourId = 0, SubHourId = bookHourSub.SubHourId, }; db.BookingSlotTotal.Add(mo); } db.SaveChanges(); } } foreach (var bookHourSecondSubHour in bookHourSecondSubHours) { for (int i = 0; i < bookingCount; i++) { var booking = new Booking() { CustomerPhone = "0123123123", DatedBook = date, IsDelete = 0, SalonId = 2, SecondSubHour = bookHourSecondSubHour.SecondSubHourId }; db.Booking.Add(booking); db.SaveChanges(); var billService = new BillService() { IsDelete = 0, BookingId = booking.Id, SalonId = 2, Pending = 0 }; db.BillService.Add(billService); db.SaveChanges(); var data = db.BookingSlotTotal.FirstOrDefault(m => m.IsDelete == false && m.WorkDate == date && m.SubHourId == bookHourSecondSubHour.SecondSubHourId && m.SalonId == salonId && m.GroupId == 0); if (data != null) { data.Total = 5; } else { var mo = new BookingSlotTotal() { Total = 5, GroupId = 0, WorkDate = date, HourFrame = TimeSpan.FromDays(1), SalonId = salonId, HourId = bookHourSecondSubHour.HourId, IsDelete = false, StaffId = 0, SecondSubHourId = 0, SubHourId = bookHourSecondSubHour.SecondSubHourId, }; db.BookingSlotTotal.Add(mo); } db.SaveChanges(); } } } //---------------------------------------------------------------------------------------------------------- } }