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