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