public ResultModels CreateOrUpdateMerchantExtend(MerchantExtendRequestModel request) { NSLog.Logger.Info("CreateOrUpdateMerchantExtend Request", request); UtilitiesFactory utilitiesFactory = new UtilitiesFactory(); var result = utilitiesFactory.CreateOrUpdateMerchantExtend(request); NSLog.Logger.Info("CreateOrUpdateMerchantExtend Result", result); return(result); }
public ResultModels CreateOrUpdateMerchantExtend(MerchantExtendRequestModel request) { ResultModels result = new ResultModels(); result.IsOk = true; using (NuWebContext cxt = new NuWebContext()) { using (var transaction = cxt.Database.BeginTransaction()) { try { var merchantExtend = (from em in cxt.G_EmployeeOnMerchantExtend join pe in cxt.G_POSEmployeeConfig on em.POSEmployeeConfigId equals pe.Id where pe.UserName == request.UserName && em.POSAPIMerchantConfigId == request.POSAPIMerchantConfigExtendId select new { Id = em.Id, POSEmpConfigId = em.POSEmployeeConfigId }).FirstOrDefault(); if (merchantExtend != null)//exist { //check list stores if (request.ListStoreExtendIds == null || request.ListStoreExtendIds.Count == 0)//hide all extend { var lstEmOnStores = cxt.G_EmployeeOnStoreExtend.Where(ww => ww.EmpOnMerchantExtendId == merchantExtend.Id).ToList(); lstEmOnStores.ForEach(ss => ss.IsActived = false); //hide header var empOnMerchant = cxt.G_EmployeeOnMerchantExtend.Where(ww => ww.Id == merchantExtend.Id).FirstOrDefault(); empOnMerchant.IsActived = false; } else //update store extend { List <G_EmployeeOnStoreExtend> lstEmpOnStoreNew = new List <G_EmployeeOnStoreExtend>(); G_EmployeeOnStoreExtend obj = null; var lstEmOnStores = cxt.G_EmployeeOnStoreExtend.Where(ww => ww.EmpOnMerchantExtendId == merchantExtend.Id).ToList(); foreach (var item in request.ListStoreExtendIds) { obj = lstEmOnStores.Where(ww => ww.StoreExtendId == item).FirstOrDefault(); if (obj == null)//new { obj = new G_EmployeeOnStoreExtend(); obj.Id = Guid.NewGuid().ToString(); obj.EmpOnMerchantExtendId = merchantExtend.Id; obj.StoreExtendId = item; obj.IsActived = true; lstEmpOnStoreNew.Add(obj); } else { obj.IsActived = true; } } var empOnMerchant = cxt.G_EmployeeOnMerchantExtend.Where(ww => ww.Id == merchantExtend.Id).FirstOrDefault(); empOnMerchant.IsActived = true; cxt.G_EmployeeOnStoreExtend.AddRange(lstEmpOnStoreNew); } } else //add new { //check emp var empId = cxt.G_POSEmployeeConfig.Where(ww => ww.UserName == request.UserName && ww.IsActived).Select(ss => ss.Id).FirstOrDefault(); G_EmployeeOnMerchantExtend empOnMerchant = new G_EmployeeOnMerchantExtend(); empOnMerchant.Id = Guid.NewGuid().ToString(); empOnMerchant.IsActived = true; empOnMerchant.POSAPIMerchantConfigId = request.POSAPIMerchantConfigExtendId; empOnMerchant.POSEmployeeConfigId = empId; empOnMerchant.CreatedDate = DateTime.Now; //detail List <G_EmployeeOnStoreExtend> lstEmpOnStoreNew = new List <G_EmployeeOnStoreExtend>(); G_EmployeeOnStoreExtend obj = null; foreach (var item in request.ListStoreExtendIds) { obj = new G_EmployeeOnStoreExtend(); obj.Id = Guid.NewGuid().ToString(); obj.EmpOnMerchantExtendId = empOnMerchant.Id; obj.StoreExtendId = item; obj.IsActived = true; obj.CreatedDate = DateTime.Now; lstEmpOnStoreNew.Add(obj); } cxt.G_EmployeeOnMerchantExtend.Add(empOnMerchant); cxt.G_EmployeeOnStoreExtend.AddRange(lstEmpOnStoreNew); } cxt.SaveChanges(); transaction.Commit(); NSLog.Logger.Info("CreateOrUpdateMerchantExtend success", request); } catch (Exception ex) { NSLog.Logger.Error("CreateOrUpdateMerchantExtend fail", ex); result.IsOk = false; result.Message = ex.Message; transaction.Rollback(); } finally { if (cxt != null) { cxt.Dispose(); } } } } return(result); }