示例#1
0
        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);
        }
示例#2
0
        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);
        }