예제 #1
0
        public virtual ActionResult Save(UserModel userModel)
        {
            if (!ModelState.IsValid)
            {
                var listRole = _roleRepository.GetAll().ToList();
                listRole = listRole.Where(p => p.RoleId != 9).ToList();
                var listOffice  = _myOfficeRepository.Search(string.Empty).ToList();
                var listStorage = _storageRepository.Search(string.Empty).ToList();
                userModel.AvailableOffices   = listOffice;
                userModel.AvailableUserRoles = listRole;
                userModel.AvailableStorages  = listStorage;
                return(View("Create", userModel));
            }
            //Check existed
            var modelExisted = Repository.GetAll().FirstOrDefault(p => p.EmailAddress == userModel.Email);

            if ((modelExisted != null && modelExisted.UserId != userModel.UserId) || (modelExisted != null && userModel.UserId <= 0))
            {
                var listRole = _roleRepository.GetAll().ToList();
                listRole = listRole.Where(p => p.RoleId != 9).ToList();
                userModel.AvailableUserRoles = listRole;
                var listOffice = _myOfficeRepository.Search(string.Empty).ToList();
                userModel.AvailableOffices = listOffice;
                var listStorage = _storageRepository.Search(string.Empty).ToList();
                userModel.AvailableStorages = listStorage;
                this.SetErrorNotification("Email này đã tồn tại trong hệ thống.");
                return(View("Create", userModel));
            }
            string passwordSalt = PasswordHelper.CreatePasswordSalt(PasswordHelper.DEFAULT_SALT_SIZE);

            if (userModel.UserId <= 0) //Create User
            {
                var user = new User()
                {
                    EmailAddress     = userModel.Email,
                    Username         = userModel.Email,
                    FirstName        = userModel.FirstName,
                    LastName         = userModel.LastName,
                    Password         = PasswordHelper.CreatePasswordHash(userModel.Password, passwordSalt),
                    IsApproved       = true,
                    IsLockedOut      = !userModel.IsLockedOut,
                    CreateDate       = DateTime.UtcNow,
                    LastActivityDate = DateTime.UtcNow,
                    PasswordSalt     = passwordSalt,
                    Roles            = new List <Role>(),
                    MyOffices        = new List <MyOffice>(),
                    Storages         = new List <Storage>(),
                    AllowLoginFrom   = userModel.AllowLoginFrom,
                    AllowLoginTo     = userModel.AllowLoginTo,
                    Salary           = userModel.Salary
                };
                foreach (var belongOffice in userModel.BelongOffices)
                {
                    user.MyOffices.Add(_myOfficeRepository.GetById(belongOffice));
                }
                foreach (var storage in userModel.BelongStorages)
                {
                    user.Storages.Add(_storageRepository.GetById(storage));
                }

                user.Roles.Add(_roleRepository.GetById(userModel.RoleId));
                if (userModel.DeliveryInDay)
                {
                    user.Roles.Add(_roleRepository.GetAll().FirstOrDefault(p => p.RoleName == RoleType.DuyetDonHangTrongNgay));
                }
                using (UnitOfWork)
                {
                    Repository.Insert(user);
                }
            }
            else //Edit user
            {
                var userEdit = Repository.GetAll().Where(p => p.UserId == userModel.UserId).Include(p => p.Storages).Include(p => p.MyOffices).FirstOrDefault();
                userEdit.EmailAddress   = userModel.Email;
                userEdit.Username       = userModel.Email;
                userEdit.FirstName      = userModel.FirstName;
                userEdit.LastName       = userModel.LastName;
                userEdit.IsLockedOut    = !userModel.IsLockedOut;
                userEdit.AllowLoginFrom = userModel.AllowLoginFrom;
                userEdit.AllowLoginTo   = userModel.AllowLoginTo;
                userEdit.Salary         = userModel.Salary;
                if (userEdit.Roles.FirstOrDefault().RoleId != userModel.RoleId)
                {
                    userEdit.Roles = new List <Role>();
                    userEdit.Roles.Add(_roleRepository.GetById(userModel.RoleId));
                }
                if (userModel.DeliveryInDay)
                {
                    userEdit.Roles.Add(_roleRepository.GetAll().FirstOrDefault(p => p.RoleName == RoleType.DuyetDonHangTrongNgay));
                }
                userEdit.MyOffices.Clear();
                foreach (var belongOffice in userModel.BelongOffices)
                {
                    userEdit.MyOffices.Add(_myOfficeRepository.GetById(belongOffice));
                }
                userEdit.Storages.Clear();
                foreach (var storage in userModel.BelongStorages)
                {
                    userEdit.Storages.Add(_storageRepository.GetById(storage));
                }
                using (UnitOfWork)
                {
                    Repository.Update(userEdit);
                }
            }

            //Save success
            this.SetSuccessNotification(string.Format("{0} đã được lưu thành công.", "Nhân viên"));
            return(RedirectToAction("Index", new { area = "Administrator" }));
        }
예제 #2
0
 public virtual ActionResult SaveOrder(OrderModel model)
 {
     if (model.OrderId <= 0) //Create News
     {
         SaveOrderToSession(model);
         if (!OrderDetails.Any())
         {
             SetErrorNotification(string.Format("Đơn hàng chưa có sản phẩm nào."));
             return(RedirectToAction("CreateOrder", "Home", new { area = "", blank = false }));
         }
         if (model.CustomerId <= 0)
         {
             SetErrorNotification(string.Format("Đơn hàng chưa có khách hàng."));
             return(RedirectToAction("CreateOrder", "Home", new { area = "", blank = false }));
         }
         if (model.PaymentType != (int)PaymentTypes.InOffice && string.IsNullOrEmpty(model.ShippingServiceName))
         {
             SetErrorNotification(string.Format("Đơn hàng chưa chọn chành xe."));
             return(RedirectToAction("CreateOrder", "Home", new { area = "", blank = false }));
         }
         //if (OrderDetails.Any(p => !p.PrintIncludeImage && !p.PrintWithoutImage))
         //{
         //    SetErrorNotification(string.Format("Bạn phải chọn in hình hoặc in không hình cho sản phẩm."));
         //    return RedirectToAction("CreateOrder", "Home", new { area = "", blank = false });
         //}
         var entity = new Order
         {
             IsDeleted    = false,
             CreateDate   = DateTime.Now,
             CreateUserId = WorkContext.CurrentUserId,
             Note         = model.Note,
             MyOfficeId   = model.MyOfficeId,
             TotalCost    = model.TotalCost,
             ExtraFee     = model.ExtraFee,
             Status       = (int)OrderStatus.Imported,
             PaymentType  = model.PaymentType,
             WaitForPrint = model.WaitForPrint,
             ShowOnTop    = model.ShowOnTop,
             OrderDetails = new List <OrderDetail>()
         };
         SetCustomerToOrder(model, entity);
         var myOffice = _myOfficeRepository.GetById(model.MyOfficeId);
         AddOrderDetailToOrder(entity, OrderDetails, myOffice.StorageId);
         //Update product in storage
         foreach (var orderDetailModel in OrderDetails)
         {
             var productInStorage = _productInStorageRepository.Search("").FirstOrDefault(p => p.ProductId == orderDetailModel.ProductId && p.StorageId == myOffice.StorageId);
             if (productInStorage != null && productInStorage.Amount > orderDetailModel.Amount)
             {
                 productInStorage.Amount -= orderDetailModel.Amount;
             }
             else
             {
                 var product = _productRepository.GetById(orderDetailModel.ProductId);
                 SetErrorNotification(string.Format("Sản phẩm {0} đã hết trong kho.", product.ProductName));
                 return(RedirectToAction("CreateOrder", "Home", new { area = "", blank = false }));
             }
         }
         using (UnitOfWork)
         {
             _orderRepository.Insert(entity);
         }
         var customer = _customerRepository.GetById(entity.CustomerId);
         SendEmailConfirm(entity, new Customer {
             CustomerCode = customer.CustomerCode, PhoneNumber = customer.PhoneNumber, CustomerName = customer.CustomerName
         }, MakeOrderDetailHtml(entity));
         OrderDetails = new List <OrderDetailModel>();
         OrderSession = new OrderModel();
         //this.SetSuccessNotification(string.Format("{0} đã được tạo thành công.", "Đơn hàng"));
         return(RedirectToAction("CreateOrder", "Home", new { area = "", blank = false, f = true }));
     }
     OrderDetails = new List <OrderDetailModel>();
     OrderSession = new OrderModel();
     //Save success
     this.SetSuccessNotification(string.Format("{0} đã được tạo thành công. Thông tin đặt hàng đã được gửi đến quý khách, vui lòng xem email để biết thêm chi tiết!", "Đơn hàng"));
     return(RedirectToAction("CreateOrder", "Home", new { area = "" }));
 }