Ejemplo n.º 1
0
        private void SendPackageAlert(WorkingUser warehouseStaff, PackageEmailModel packageEmailModel)
        {
            var templatePath   = HostingEnvironment.MapPath("~/App_Data/EmailTemplates/PackageEmail.cshtml");
            var content        = File.ReadAllText(templatePath);
            var uri            = HttpContext.Current.Request.Url;
            var currentHostUrl = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;

            foreach (var email in packageEmailModel.Emails)
            {
                var bodyContent = Razor.Parse(content, new
                {
                    ReceiverName   = email.Name,
                    SenderName     = warehouseStaff.FullName,
                    Content        = packageEmailModel.Comment,
                    Host           = currentHostUrl,
                    IsPackagedFull = packageEmailModel.IsFull ? "Yes" : "No",
                    packageEmailModel.DepartmentName,
                    packageEmailModel.LocationName
                });
                _emailDelivery.Send("Staffpurchase - Package Alert Message", bodyContent, email.Email, "");
            }
        }
Ejemplo n.º 2
0
        public void PackageOrder(WorkingUser warehouseStaff, int departmentId, OrderType orderType, bool isDeficient = false,
                                 string note = "")
        {
            using (var transaction = _dbContext.BeginDbTransaction())
            {
                try
                {
                    var user = _userRepository.TableNoTracking.FirstOrDefault(c => c.Id == warehouseStaff.Id);
                    if (user == null)
                    {
                        throw new ArgumentNullException(nameof(warehouseStaff));
                    }

                    var log = new PackageLog
                    {
                        LocationId        = user.LocationId.GetValueOrDefault(0),
                        DepartmentId      = departmentId,
                        PackedDate        = DateTime.Now,
                        WarehouseUserId   = user.Id,
                        WarehouseUserName = user.UserName,
                        FullPacked        = !isDeficient,
                        Comment           = note,
                        OrderType         = (int)orderType
                    };

                    _pkgLogRepository.Insert(log);
                    _orderRepository.BulkUpdate(PackageFilter(warehouseStaff, orderType, departmentId),
                                                c => new Order {
                        StatusId = (short)OrderStatus.Packaged, PackageLogId = log.Id
                    });

                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }

            // Start sending email to HR Admin and HR Manager when products in packaged orders are deficient.
            if (isDeficient)
            {
                try
                {
                    var hrAdmin   = _userRepository.TableNoTracking.FirstOrDefault(c => c.RoleId == (int)UserRole.HRAdmin);
                    var hrManager =
                        _userRepository.TableNoTracking.FirstOrDefault(c => c.RoleId == (int)UserRole.HRManager);
                    if (hrAdmin == null && hrManager == null)
                    {
                        throw new NullReferenceException();
                    }
                    var packageEmail = new PackageEmailModel
                    {
                        Comment        = note,
                        IsFull         = false,
                        DepartmentName = _departmentRepository.GetById(departmentId).Name,
                        LocationName   = _locationRepository.GetById(warehouseStaff.LocationId).Name,
                        Emails         = new[] { new EmailReceiverModel
                                                 {
                                                     Id    = hrAdmin.Id,
                                                     Email = hrAdmin.EmailAddress,
                                                     Name  = hrAdmin.FullName
                                                 }, new EmailReceiverModel
                                                 {
                                                     Id    = hrAdmin.Id,
                                                     Email = hrManager.EmailAddress,
                                                     Name  = hrManager.FullName
                                                 } }
                    };

                    SendPackageAlert(warehouseStaff, packageEmail);
                }
                catch (Exception ex)
                {
                    _logger.Error("Cannot send order packaging email", ex);
                }
            }
        }