public bool IsOrderStatus(Order order, OrderStatusCode orderStatus) { return(OrderRoot.Elements().Any( item => Convert.ToInt32(item.Element("OrderKey").Value) == order.OrderKey && item.Element("Status").Value == orderStatus.ToString() )); }
public override bool Execute(OrderTaskContext context) { if (context.Order.IsRecurring) { return(true); } if (context.PreviousPaymentStatus == OrderPaymentStatus.Paid && context.Order.PaymentStatus != OrderPaymentStatus.Paid) { var statusCode = OrderStatusCode.Received; var orderStatus = OrderStatusCode.FindByBvin(statusCode); if (orderStatus != null && orderStatus.Bvin != string.Empty) { context.Order.StatusCode = orderStatus.Bvin; context.Order.StatusName = orderStatus.StatusName; } else { EventLog.LogEvent("Change Order Status When Payment Removed", "Could not find order status with id of " + statusCode, EventLogSeverity.Error); } } return(true); }
public bool IsOrderStatus(Order order, OrderStatusCode orderStatus) { return(DataSource.OrdersCollection.Any( item => item.OrderKey == order.OrderKey && item.Status == orderStatus )); }
private async Task LoadOrders(bool refresh) { var orders = (await OrderManager.Instance.LoadOrders(Day, refresh))?.AsEnumerable().OrderByDescending(o => o.PlacedTime); Orders.Clear(); if (!orders.IsNullOrEmpty()) { OrderStatusCode[] activeStatus = new OrderStatusCode[] { OrderStatusCode.PendingCancel, OrderStatusCode.PendingSubmit, OrderStatusCode.PreSubmitted, OrderStatusCode.Submitted }; // 1. Active orders var activeOrders = orders.Where(o => activeStatus.Contains(o.Status)); if (!activeOrders.IsNullOrEmpty()) { Orders.Add(new GroupedOrdersList($"Active Orders ({activeOrders.Count()})", "ACTIVE", activeOrders.ToOrderViewModels())); } else { Orders.Add(new GroupedOrdersList("Active Orders (0)", "ACTIVE")); } // 2. Inactive orders var inactiveOrders = orders.Where(o => !activeStatus.Contains(o.Status)); if (!inactiveOrders.IsNullOrEmpty()) { Orders.Add(new GroupedOrdersList($"Inactive Orders ({inactiveOrders.Count()})", "INACTIVE", inactiveOrders.ToOrderViewModels())); } else { Orders.Add(new GroupedOrdersList("Inactive Orders (0)", "INACTIVE")); } } }
public override bool Execute(OrderTaskContext context) { if (context.Inputs["PreviousShippingStatus"] != null) { var val = 0; var parsed = int.TryParse(context.Inputs["PreviousShippingStatus"].Value, out val); if (parsed && val == (int)OrderShippingStatus.FullyShipped) { if (context.Order.ShippingStatus != OrderShippingStatus.NonShipping && context.Order.ShippingStatus != OrderShippingStatus.FullyShipped) { var statusCode = OrderStatusCode.Received; var orderStatus = OrderStatusCode.FindByBvin(statusCode); if (orderStatus != null && orderStatus.Bvin != string.Empty) { context.Order.StatusCode = orderStatus.Bvin; context.Order.StatusName = orderStatus.StatusName; } else { EventLog.LogEvent("Change Order Status When Shipment Removed", "Could not find order status with id of " + statusCode, EventLogSeverity.Error); } } } } return(true); }
private async Task ProcessTaskCatMessagesAsync(Message message, CancellationToken token) { logger.LogInformation($"Received message from TaskCat: SequenceNumber:{message.SystemProperties.SequenceNumber}"); var messageBody = Encoding.UTF8.GetString(message.Body); var taskCatMessage = JsonConvert.DeserializeObject <TaskCatMessage>(messageBody); if (taskCatMessage.RemoteJobStage == RemoteJobStage.ERROR) { logger.LogInformation($"Order {taskCatMessage.ReferenceId} ended in {RemoteJobStage.ERROR}"); await this.cache.StringSetAsync(taskCatMessage.ReferenceId, RemoteJobStage.ERROR); } else if (taskCatMessage.RemoteJobStage == RemoteJobStage.CREATED) { logger.LogInformation($"Order {taskCatMessage.ReferenceId} was created in TaskCat. Taskcat job ID/HRID: {taskCatMessage.JobID} => {taskCatMessage.JobHRID}"); await this.orderService.UpdateOrderReferenceId(this.infiniToken, taskCatMessage.ReferenceId, taskCatMessage.JobHRID); await this.cache.StringSetAsync(taskCatMessage.ReferenceId, RemoteJobStage.CREATED); } else if (taskCatMessage.RemoteJobStage == RemoteJobStage.UPDATE) { logger.LogInformation($"Order {taskCatMessage.ReferenceId} was updated in TaskCat. Taskcat job ID/HRID: {taskCatMessage.JobID} => {taskCatMessage.JobHRID}"); OrderStatusCode translatedStatus = StatusTranslator.TranslateStatus(taskCatMessage.RemoteJobState); if (translatedStatus != OrderStatusCode.Undefined) { await this.orderService.UpdateOrderStatus(this.infiniToken, taskCatMessage.ReferenceId, translatedStatus); } await this.cache.StringSetAsync(taskCatMessage.ReferenceId, RemoteJobStage.UPDATE); } }
public static OrderStatusCode OrderStatusCode(int?counter) { var rtValue = new OrderStatusCode(); rtValue.Name = "Name" + counter.Extra(); return(rtValue); }
public override bool Execute(OrderTaskContext context) { if (context.Order.IsPlaced) { return(true); } if (context.Order.Items.Count == 0) { context.Errors.Add(new WorkflowMessage("Order already placed.", GlobalLocalization.GetString("OrderAlreadyPlaced"), true)); return(false); } context.Order.IsPlaced = true; context.Order.TimeOfOrderUtc = DateTime.UtcNow; var errors = new List <string>(); if (!context.HccApp.OrdersReserveInventoryForAllItems(context.Order, errors)) { foreach (var item in errors) { context.Errors.Add(new WorkflowMessage("Stock Too Low", item, true)); } return(false); } if (context.HccApp.CurrentRequestContext.RoutingContext.HttpContext != null) { var request = context.HccApp.CurrentRequestContext.RoutingContext.HttpContext.Request; var note = new OrderNote(); note.IsPublic = false; note.Note = "Customer IP: " + request.UserHostAddress; note.Note += "<br> Customer Host: " + request.UserHostName; note.Note += "<br> Browser: " + request.UserAgent; context.Order.Notes.Add(note); context.Order.UserDeviceType = DetermineDeviceType(request); } var c = OrderStatusCode.FindByBvin(OrderStatusCode.Received); if (c != null) { var affiliateId = context.HccApp.ContactServices.GetCurrentAffiliateId(); context.Order.StatusName = c.StatusName; context.Order.StatusCode = c.Bvin; context.Order.AffiliateID = affiliateId; if (affiliateId.HasValue) { context.HccApp.ContactServices.UpdateProfileAffiliateId(affiliateId.Value); } } return(true); }
public async Task <Deal> UpdateForOrder(Order order, PairConfig config) { if (!order.DealId.HasValue) { return(null); } return(await WithConnection(async (connection, transaction) => { Deal deal = await _dealManager.Get(order.DealId.Value, connection, transaction); if (deal == null) { throw new Exception($"Deal {order.DealId} not found"); } Order storedOrder = await _orderManager.Update(order, connection, transaction); if (order.OrderSideCode == OrderSideCode.BUY.Code) { deal.AvgOpenPrice = order.Price; deal.Amount = order.Amount; deal.EstimatedFee = order.Fee *order.Price; deal.TakeProfit = order.Price + order.Price * (decimal)config.DefaultTakeProfitPercent / 100; deal.StopLoss = order.Price - order.Price * (decimal)config.DefaultStopLossPercent / 100; if (order.TradingModeCode == TradingModeCode.AUTO.Code) { Order sellOrder = new Order(); sellOrder.ExchangeCode = deal.Exchange; sellOrder.Symbol = deal.Symbol; sellOrder.TradingModeCode = TradingModeCode.AUTO.Code; sellOrder.FillPoliticsCode = FillPoliticsCode.GTC.Code; sellOrder.OrderStatusCode = OrderStatusCode.PENDING.Code; sellOrder.DealId = deal.Id; sellOrder.OrderTypeCode = OrderTypeCode.LMT.Code; sellOrder.OrderSideCode = OrderSideCode.SELL.Code; sellOrder.Amount = deal.Amount; sellOrder.Price = deal.TakeProfit; sellOrder.StopLoss = deal.StopLoss; await _orderManager.Create(order, connection, transaction); } } else { deal.AvgClosePrice = order.Price; deal.EstimatedFee += order.Fee; deal.StatusCode = OrderStatusCode.Create(order.OrderStatusCode).ToDealCode().Code; } deal = await _dealManager.Update(deal, connection, transaction); deal.Orders.Add(storedOrder); return deal; })); }
private void CreateApprovals(List <Approval> approvals, OrderStatusCode currentLevel, Order order) { //var approval = new Approval(); //approval.Order = new Order(); //approval.Order.SetIdTo(i + 1 + currentOffSet); //approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Requester); //approval.User = createdBy; //approval.Approved = true; //approvals.Add(approval); var approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Approver); approval.User = UserRepository.GetNullableById("hsimpson"); if (approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.AccountManager); approval.User = UserRepository.GetNullableById("flanders"); if (approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Purchaser); approval.User = UserRepository.GetNullableById("awong"); if (approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(OrderStatusCode.Codes.CompleteNotUploadedKfs); approval.User = UserRepository.GetNullableById("zoidberg"); if (approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (!IsPostBack) { lstStatus.DataSource = OrderStatusCode.FindAll(); lstStatus.DataValueField = "Bvin"; lstStatus.DataTextField = "StatusDisplayName"; lstStatus.DataBind(); } }
protected void lstStatus_SelectedIndexChanged(object sender, EventArgs e) { if (CurrentOrder != null) { var prevStatusCode = CurrentOrder.StatusCode; var newStatusCode = OrderStatusCode.FindByBvin(lstStatus.SelectedValue); CurrentOrder.StatusCode = newStatusCode.Bvin; CurrentOrder.StatusName = newStatusCode.StatusName; HccApp.OrderServices.Orders.Update(CurrentOrder); HccApp.OrderServices.OrderStatusChanged(CurrentOrder, prevStatusCode); } }
public override bool Execute(OrderTaskContext context) { if (!context.Order.IsRecurring && context.Order.ShippingStatus == OrderShippingStatus.FullyShipped && context.Order.PaymentStatus == OrderPaymentStatus.Paid) { var orderStatus = OrderStatusCode.FindByBvin(OrderStatusCode.Completed); if (orderStatus != null) { context.Order.StatusCode = orderStatus.Bvin; context.Order.StatusName = orderStatus.StatusName; } } return(true); }
public void OrderCancelled(Order order, string comment, OrderStatusCode previousStatus) { var user = _userRepository.GetById(_userIdentity.Current); var trackingEvent = new OrderTracking { User = user, StatusCode = order.StatusCode, Description = "cancelled" }; order.AddTracking(trackingEvent); _notificationService.OrderCancelled(order, user, comment, previousStatus); }
public void OrderCancelled(Order order, User actor, string cancelReason, OrderStatusCode previousStatus) { var user = order.CreatedBy; var preference = _emailPreferenceRepository.GetNullableById(user.Id); var notificationType = EmailPreferences.NotificationTypes.PerEvent; if (preference != null) { notificationType = preference.NotificationType; } //var emailQueue = new EmailQueue(order, notificationType, string.Format(CancellationMessage, GenerateLink(_serverLink.Address, order.OrderRequestNumber()), order.Vendor == null ? "Unspecified Vendor" : order.Vendor.Name, actor.FullName, order.StatusCode.Name, cancelReason), user); var emailQueue2 = new EmailQueueV2(order, notificationType, "Cancelled", string.Format("By {0} at {1} review with the comment \"{2}\".", actor.FullName, previousStatus.Name, cancelReason), user); order.AddEmailQueue(emailQueue2); }
public void OrderDenied(Order order, User user, string comment, OrderStatusCode previousStatus) { var queues = new List <EmailQueueV2>(); foreach (var appr in order.OrderTrackings.Select(a => new { User = a.User, StatusCode = a.StatusCode }).Distinct()) { var target = appr.User; var preference = GetEmailPreferences(user.Id); //var emailQueue = new EmailQueue(order, preference.NotificationType, string.Format(CancellationMessage, GenerateLink(_serverLink.Address, order.OrderRequestNumber()), order.Vendor == null ? "Unspecified Vendor" : order.Vendor.Name, user.FullName, order.StatusCode.Name, comment), target); var emailQueue2 = new EmailQueueV2(order, preference.NotificationType, "Denied", string.Format("By {0} at {1} review with the following comment \"{2}\".", user.FullName, previousStatus.Name, comment), target); //order.AddEmailQueue(emailQueue); AddToQueue(queues, emailQueue2); } AddQueuesToOrder(order, queues); }
public static string ShortenOrderStatus(OrderStatusCode orderStatus) { switch (orderStatus) { case OrderStatusCode.Submitted: return("Sbtd"); case OrderStatusCode.ApiCanceled: case OrderStatusCode.Cancelled: return("Cxld"); case OrderStatusCode.Filled: return("Fld"); default: return(orderStatus.ToString()); } }
public Order SetupData1(string userId, OrderStatusCode currentLevel) { var approvals = new List<Approval>(); var order = CreateValidEntities.Order(1); order.SetIdTo(1); order.CreatedBy = UserRepository.GetNullableById(userId); Assert.IsNotNull(order.CreatedBy); order.StatusCode = currentLevel; CreateApprovals(approvals, currentLevel, order); new FakeApprovals(0, ApprovalRepository, approvals); order.OrderTrackings = SetupOrderTracking(order); order.Organization = CreateValidEntities.Organization(9); order.Organization.SetIdTo("testOrg"); return order; }
public IEnumerable <OrderBrief> Get(int pageSize = 100, int pageNumber = 1, string period = "year", string status = "") { var totalCount = 0; List <OrderSnapshot> data = null; var dates = GetDateRange(period); if (status == "Ready for payment") { data = HccApp.OrderServices.Orders.GetReadyForPaymentPaged(dates.StartDate, dates.EndDate, pageNumber, pageSize, ref totalCount); } else if (status == "Ready for shipping") { data = HccApp.OrderServices.Orders.GetReadyForShippingPaged(dates.StartDate, dates.EndDate, pageNumber, pageSize, ref totalCount); } else { var statusCode = OrderStatusCode.FindAll().FirstOrDefault(o => o.StatusName == status); var statusCodeBvin = string.Empty; if (statusCode != null) { statusCodeBvin = statusCode.Bvin; } data = GetOrdersData(pageSize, pageNumber, dates, statusCodeBvin, ref totalCount); } return(data.Select(d => new OrderBrief { OrderId = d.bvin, OrderDate = d.TimeOfOrderUtc, CustomerName = string.Format("{0} {1}", d.BillingAddress.FirstName, d.BillingAddress.LastName), Total = d.TotalGrand, OrderNumber = d.OrderNumber, StatusCode = d.StatusName, PaymentStatus = d.PaymentStatus.ToString(), ShippingStatus = d.ShippingStatus.ToString() }).ToList()); }
public Order SetupData1(string userId, OrderStatusCode currentLevel) { var approvals = new List <Approval>(); var order = CreateValidEntities.Order(1); order.SetIdTo(1); order.CreatedBy = UserRepository.GetNullableById(userId); Assert.IsNotNull(order.CreatedBy); order.StatusCode = currentLevel; CreateApprovals(approvals, currentLevel, order); new FakeApprovals(0, ApprovalRepository, approvals); order.OrderTrackings = SetupOrderTracking(order); order.Organization = CreateValidEntities.Organization(9); order.Organization.SetIdTo("testOrg"); return(order); }
public override bool Execute(OrderTaskContext context) { var result = true; if (context.Order != null) { var d = new FraudCheckData(); PopulateFraudData(d, context); var scorer = new FraudScorer(context.HccApp.CurrentRequestContext); context.Order.FraudScore = scorer.ScoreData(d); if (context.Order.FraudScore >= 5) { var s = OrderStatusCode.FindByBvin(OrderStatusCode.OnHold); context.Order.StatusCode = s.Bvin; context.Order.StatusName = s.StatusName; context.HccApp.OrderServices.Orders.Update(context.Order); } if (d.Messages.Count > 0) { var n = new OrderNote(); n.IsPublic = false; n.Note = "Fraud Check Failed"; foreach (var m in d.Messages) { n.Note += " | " + m; } context.Order.Notes.Add(n); } context.HccApp.OrderServices.Orders.Update(context.Order); } return(result); }
public async Task <IEnumerable <Order> > GetOrders(string token, OrderStatusCode orderStatus = OrderStatusCode.Undefined) { if (string.IsNullOrWhiteSpace(token)) { throw new ArgumentException("Invalid token provided", nameof(token)); } var uriBuilder = new UriBuilder(baseUri); uriBuilder.Path = "api/orders/get-orders"; if (orderStatus != OrderStatusCode.Undefined) { var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["order_status"] = ((int)orderStatus).ToString(); uriBuilder.Query = query.ToString(); } var request = new HttpRequestMessage() { RequestUri = uriBuilder.Uri, Method = HttpMethod.Post }; request.Headers.Add("token", token); var response = await this._httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); var returnVal = JsonConvert.DeserializeObject <List <Order> >(responseJson); return(returnVal); }
public void OrderStatusChange(Order order, OrderStatusCode newStatusCode) { }
public void SetupOrderStatusCodes() { var orderStatusCodes = new List<OrderStatusCode>(); var orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Account Manager"; orderStatusCode.Level = 3; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("AM"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Approver"; orderStatusCode.Level = 2; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("AP"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Conditional Approval"; orderStatusCode.Level = 2; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("CA"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Complete-Not Uploaded KFS"; orderStatusCode.Level = 5; orderStatusCode.IsComplete = true; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("CN"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Complete"; orderStatusCode.Level = 5; orderStatusCode.IsComplete = true; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("CP"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Purchaser"; orderStatusCode.Level = 4; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("PR"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Requester"; orderStatusCode.Level = 1; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("RQ"); orderStatusCodes.Add(orderStatusCode); new FakeOrderStatusCodes(0, OrderStatusCodeRepository, orderStatusCodes, true); }
private void CreateApprovals(List<Approval> approvals, OrderStatusCode currentLevel, Order order) { //var approval = new Approval(); //approval.Order = new Order(); //approval.Order.SetIdTo(i + 1 + currentOffSet); //approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Requester); //approval.User = createdBy; //approval.Approved = true; //approvals.Add(approval); var approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Approver); approval.User = UserRepository.GetNullableById("hsimpson"); if(approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.AccountManager); approval.User = UserRepository.GetNullableById("flanders"); if(approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(Role.Codes.Purchaser); approval.User = UserRepository.GetNullableById("awong"); if(approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); approval = new Approval(); approval.Order = new Order(); approval.Order.SetIdTo(order.Id); approval.StatusCode = OrderStatusCodeRepository.GetNullableById(OrderStatusCode.Codes.CompleteNotUploadedKfs); approval.User = UserRepository.GetNullableById("zoidberg"); if(approval.StatusCode.Level < currentLevel.Level) { approval.Completed = true; } approvals.Add(approval); }
public override bool Execute(OrderTaskContext context) { bool result = true; if (context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth > 0) { //Use the last transaction entered by customer first List <OrderTransaction> transactions = context.HccApp.OrderServices.Transactions .FindForOrder(context.Order.bvin) .OrderByDescending(x => x.TimeStampUtc) .ToList(); decimal dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; foreach (OrderTransaction p in transactions) { if (p.Action == ActionType.PayPalExpressCheckoutInfo) { // if we already have an auth or charge on the card, skip if (p.HasSuccessfulLinkedAction(ActionType.PayPalHold, transactions) || p.HasSuccessfulLinkedAction(ActionType.PayPalCharge, transactions)) { continue; } try { OrderPaymentManager payManager = new OrderPaymentManager(context.Order, context.HccApp); decimal amount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; result = context.HccApp.CurrentRequestContext.CurrentStore.Settings.PayPal.ExpressAuthorizeOnly ? payManager.PayPalExpressHold(p, amount) : payManager.PayPalExpressCharge(p, amount); if (result == true) { dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; //Amount required in order is already charged. No need to charge on other transactions if (dueAmount <= 0) { break; } } } catch (Exception ex) { context.Errors.Add(new WorkflowMessage("Exception During Receive Paypal Express Payments", ex.Message + ex.StackTrace, false)); } } } } if (result == false) { var errorString = "An error occurred while attempting to process your Paypal Express payment. Please check your payment information and try again"; context.Errors.Add(new WorkflowMessage("Receive Card Failed", errorString, true)); // Failure Status Code var failCode = OrderStatusCode.OnHold; var c = OrderStatusCode.FindByBvin(failCode); if (c != null) { context.Order.StatusCode = c.Bvin; context.Order.StatusName = c.StatusName; } } return(result); }
/// <summary> /// Generate Random orders /// </summary> /// <param name="users">List of users to select from</param> /// <param name="vendors">List of vendors to select from</param> /// <param name="statusCode">Status code to set the order approved through</param> /// <returns></returns> private static Order GenderateRandomOrder(Workgroup workgroup, OrderStatusCode statusCode, ISession session, WorkgroupPermission user = null, WorkgroupPermission excludeUser = null ) { var randomizedPerms = workgroup.Permissions.Select(a => new {Permission = a, Key = Guid.NewGuid()}); var requester = user ?? (excludeUser == null ? randomizedPerms.Where(a=>a.Permission.Role.Id == "RQ").OrderBy(a => a.Key).Select(a => a.Permission).FirstOrDefault() : randomizedPerms.Where(a=>a.Permission.Role.Id == "RQ" && a.Permission != excludeUser).OrderBy(a => a.Key).Select(a => a.Permission).FirstOrDefault()); var approver = randomizedPerms.Where(a => a.Permission.Role.Id == "AP" && a.Permission.User.Id !="zoidberg").OrderBy(a => a.Key).Select(a => a.Permission).FirstOrDefault(); var conditionalApprover = session.Load<User>("zoidberg"); //workgroup.Permissions.Where(a => a.User.Id == "zoidberg").FirstOrDefault(); var accountmgr = randomizedPerms.Where(a => a.Permission.Role.Id == "AM").OrderBy(a => a.Key).Select(a => a.Permission).FirstOrDefault(); var purchaser = randomizedPerms.Where(a => a.Permission.Role.Id == "PR").OrderBy(a => a.Key).Select(a => a.Permission).FirstOrDefault(); var order = new Order() { Justification = _justifications.Skip(_random.Next() % 5).Take(1).FirstOrDefault(), OrderType = session.Load<OrderType>("OR"), Workgroup = workgroup, Organization = workgroup.PrimaryOrganization, Vendor = workgroup.Vendors.Skip(_random.Next() % workgroup.Vendors.Count).Take(1).FirstOrDefault(), Address = workgroup.Addresses.Skip(_random.Next() % workgroup.Addresses.Count).Take(1).FirstOrDefault(), ShippingType = session.QueryOver<ShippingType>().Skip(_random.Next() % 3).Take(1).SingleOrDefault(), DeliverTo = "Mr. Smith", DateNeeded = DateTime.Now.AddDays(_random.Next() % 30), AllowBackorder = _random.Next() % 2 == 1, EstimatedTax = 8.89m, CreatedBy = requester.User, StatusCode = statusCode }; order.GenerateRequestNumber(); // add the tracking order.AddApproval(new Approval() { StatusCode = session.Load<OrderStatusCode>("RQ"), Completed = true, User = requester.User }); order.AddApproval(new Approval() { StatusCode = session.Load<OrderStatusCode>("AP"), Completed = statusCode.Level > 2 , User = approver.User }); order.AddApproval(new Approval() { StatusCode = session.Load<OrderStatusCode>("AM"), Completed = statusCode.Level > 3 , User = accountmgr.User }); order.AddApproval(new Approval() { StatusCode = session.Load<OrderStatusCode>("PR"), Completed = statusCode.Level > 4 , User = purchaser.User }); // add the approvals var daysBack = ((-1)*(_random.Next()%10)) - 10; order.AddTracking(new OrderTracking() { User = requester.User, DateCreated = DateTime.Now.AddDays(daysBack), Description = "Order submitted by " + requester.User.FullName, StatusCode = session.Load<OrderStatusCode>("RQ") }); if (statusCode.Level > 2) { order.AddTracking(new OrderTracking() { User = approver.User, DateCreated = DateTime.Now.AddDays(daysBack + 1), Description = "Order reviewed by " + approver.User.FullName, StatusCode = session.Load<OrderStatusCode>("AP") }); } if (statusCode.Level > 3) { order.AddTracking(new OrderTracking() { User = accountmgr.User, DateCreated = DateTime.Now.AddDays(daysBack + 3), Description = "Order reviewed by " + accountmgr.User.FullName, StatusCode = session.Load<OrderStatusCode>("AM") }); } if (statusCode.Level > 4) { order.AddTracking(new OrderTracking() { User = purchaser.User, DateCreated = DateTime.Now.AddDays(daysBack + (_random.Next() % 4)+3), Description = "Order reviewed by " + purchaser.User.FullName, StatusCode = session.Load<OrderStatusCode>("PR") }); order.AddTracking(new OrderTracking() { User = purchaser.User, DateCreated = DateTime.Now.AddDays(daysBack + (_random.Next() % 4)+8), Description = "Order marked complete by " + purchaser.User.FullName, StatusCode = session.Load<OrderStatusCode>("CN") }); } // add the conditional stuff if we feel like it if (_random.Next() % 2 == 1) { order.AddApproval(new Approval() { StatusCode = session.Load<OrderStatusCode>("CA"), Completed = statusCode.Level > 2 , User = conditionalApprover }); if (statusCode.Level > 2) { order.AddTracking(new OrderTracking() { User = conditionalApprover, DateCreated = DateTime.Now.AddDays(daysBack + 2), Description = "Order reviewed by " + conditionalApprover.FullName, StatusCode = session.Load<OrderStatusCode>("AP") }); } } // add the line items var numLineItems = (_random.Next()%5) + 1; // minimum of 1 line item for (var i = 0; i < numLineItems; i++) { var item = _items.Skip(_random.Next()%_items.Count()).Take(1).FirstOrDefault(); order.AddLineItem(new LineItem() { Quantity = _random.Next() % 10, UnitPrice = item.Value + (item.Value * ((_random.Next() % 10)+1 / 10)), Unit = "each", Description = item.Key }); } // account information var splitType = _random.Next()%2; if (splitType == 1) { var numSplits = _random.Next()%2; var skip = _random.Next()%18; var accounts = session.QueryOver<Account>().Skip(skip+numSplits>=18 ? 18-numSplits : skip).Take(numSplits); foreach (var act in accounts.List()) { order.AddSplit(new Split(){Account = act.Id, Amount = order.Total()/numSplits}); } } // set shipping order.ShippingAmount = order.Total()*.1m; order.TotalFromDb = order.Total(); return order; }
public void OrderDenied(Order order, User user, string comment, OrderStatusCode previousStatus) { var queues = new List<EmailQueueV2>(); foreach (var appr in order.OrderTrackings.Select(a => new { User = a.User, StatusCode = a.StatusCode }).Distinct()) { var target = appr.User; var preference = GetEmailPreferences(user.Id); //var emailQueue = new EmailQueue(order, preference.NotificationType, string.Format(CancellationMessage, GenerateLink(_serverLink.Address, order.OrderRequestNumber()), order.Vendor == null ? "Unspecified Vendor" : order.Vendor.Name, user.FullName, order.StatusCode.Name, comment), target); var emailQueue2 = new EmailQueueV2(order, preference.NotificationType, "Denied", string.Format("By {0} at {1} review with the following comment \"{2}\".", user.FullName, previousStatus.Name, comment), target); //order.AddEmailQueue(emailQueue); AddToQueue(queues, emailQueue2); } AddQueuesToOrder(order, queues); }
/// <summary> /// Determines if user has opted out of a selected email /// </summary> /// <param name="preference"></param> /// <param name="role"></param> /// <param name="currentStatus"></param> /// <param name="eventCode"></param> /// <returns>True if should receive email, False if should not receive email</returns> private bool IsMailRequested(EmailPreferences preference, OrderStatusCode role, OrderStatusCode currentStatus, EventCode eventCode, OrderType orderType = null) { // no preference, automatically gets emails if (preference == null) return true; // what is the role of the user we are inspecting switch (role.Id) { case OrderStatusCode.Codes.Requester: // what event is happening switch (eventCode) { case EventCode.Approval: // evaluate the level that is being handled switch (currentStatus.Id) { case OrderStatusCode.Codes.Approver: return preference.RequesterApproverApproved; case OrderStatusCode.Codes.ConditionalApprover: return preference.RequesterApproverApproved; case OrderStatusCode.Codes.AccountManager: return preference.RequesterAccountManagerApproved; // this technically doesn't exist, gets completed at purchaser level //case OrderStatusCode.Codes.Purchaser: return preference.RequesterPurchaserAction; //case OrderStatusCode.Codes.Complete: return preference.RequesterKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) default: return true; } case EventCode.Update: switch (currentStatus.Id) { case OrderStatusCode.Codes.Approver: return preference.RequesterApproverChanged; case OrderStatusCode.Codes.ConditionalApprover: return preference.RequesterApproverChanged; case OrderStatusCode.Codes.AccountManager: return preference.RequesterAccountManagerChanged; case OrderStatusCode.Codes.Purchaser: return preference.RequesterPurchaserChanged; default: return true; } case EventCode.Cancelled: // there is no option, user always receives this event return true; case EventCode.Complete: return preference.RequesterPurchaserAction; //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Received: return preference.RequesterReceived; case EventCode.Paid: return preference.RequesterPaid; } break; case OrderStatusCode.Codes.Approver: // evaluate the event switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.AccountManager: return preference.ApproverAccountManagerApproved; case OrderStatusCode.Codes.Purchaser: return preference.ApproverPurchaserProcessed; //case OrderStatusCode.Codes.Complete: return preference.ApproverKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? case OrderStatusCode.Codes.Complete: return preference.ApproverPurchaserProcessed; default: return false; } case EventCode.Update: // this email is turned off, no email exists return false; case EventCode.Cancelled: // this email is turned off, no email exists return false; // this technically doesn't exist, since a "complete" order is an approval at purchaser level, see switch statement in approval event. case EventCode.Complete: return preference.ApproverPurchaserProcessed; //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Arrival: return preference.ApproverOrderArrive; // no received status for approver case EventCode.Received: return false; case EventCode.Paid: return false; default: return false; } case OrderStatusCode.Codes.ConditionalApprover: //Copied code from Approver above... Otherwise this was always returning true... // evaluate the event switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.AccountManager: return preference.ApproverAccountManagerApproved; case OrderStatusCode.Codes.Purchaser: return preference.ApproverPurchaserProcessed; //case OrderStatusCode.Codes.Complete: return preference.ApproverKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? case OrderStatusCode.Codes.Complete: return preference.ApproverPurchaserProcessed; default: return false; } case EventCode.Update: // this email is turned off, no email exists return false; case EventCode.Cancelled: // this email is turned off, no email exists return false; // this technically doesn't exist, since a "complete" order is an approval at purchaser level, see switch statement in approval event. case EventCode.Complete: return preference.ApproverPurchaserProcessed; //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Arrival: return preference.ApproverOrderArrive; // no received status for approver case EventCode.Received: return false; case EventCode.Paid: return false; default: return false; } break; case OrderStatusCode.Codes.AccountManager: switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.Purchaser: return preference.AccountManagerPurchaserProcessed; case OrderStatusCode.Codes.Complete: return preference.AccountManagerPurchaserProcessed; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? default: return true; } case EventCode.Update: // no email exists return false; case EventCode.Cancelled: // no email exists return false; case EventCode.Complete: return preference.AccountManagerPurchaserProcessed; //case EventCode.KualiUpdate: // //TODO: Add in kuali stuff // break; case EventCode.Arrival: return preference.AccountManagerOrderArrive; // account manager doesn't have any emails fror received. case EventCode.Received: return false; case EventCode.Paid: return false; default: return false; } case OrderStatusCode.Codes.Purchaser: switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.Complete: return preference.PurchaserKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? } // no email exists return false; case EventCode.Update: // no email exists return false; case EventCode.Cancelled: // no email exists return false; //case EventCode.KualiUpdate: // //TODO: Add in Kuali Stuff // break; case EventCode.Arrival: return preference.PurchaserOrderArrive; case EventCode.Received: switch (orderType.Id) { case "KFS": return preference.PurchaserKfsItemReceived; case "PC": return preference.PurchaserPCardItemReceived; case "CS": return preference.PurchaserCampusServicesItemReceived; default: return false; } case EventCode.Paid: switch (orderType.Id) { case "KFS": return preference.PurchaserKfsItemPaid; case "PC": return preference.PurchaserPCardItemPaid; case "CS": return preference.PurchaserCampusServicesItemPaid; default: return false; } default: return false; } } // default receive email return true; }
public bool IsOrderStatus(Order order, OrderStatusCode orderStatus) { return(XO.IsOrderStatus(order, orderStatus)); }
public void LoadOrderStatusCodes() { var orderStatusCodeRepository = new RepositoryWithTypedId <OrderStatusCode, string>(); var orderStatusCodes = new List <OrderStatusCode>(); var orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Account Manager"; orderStatusCode.Level = 3; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("AM"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Approver"; orderStatusCode.Level = 2; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("AP"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Conditional Approval"; orderStatusCode.Level = 2; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("CA"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Complete-Not Uploaded KFS"; orderStatusCode.Level = 5; orderStatusCode.IsComplete = true; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("CN"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Complete"; orderStatusCode.Level = 5; orderStatusCode.IsComplete = true; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("CP"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Purchaser"; orderStatusCode.Level = 4; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = true; orderStatusCode.SetIdTo("PR"); orderStatusCodes.Add(orderStatusCode); orderStatusCode = new OrderStatusCode(); orderStatusCode.Name = "Requester"; orderStatusCode.Level = 1; orderStatusCode.IsComplete = false; orderStatusCode.KfsStatus = false; orderStatusCode.ShowInFilterList = false; orderStatusCode.SetIdTo("RQ"); orderStatusCodes.Add(orderStatusCode); foreach (var statusCode in orderStatusCodes) { orderStatusCodeRepository.EnsurePersistent(statusCode); } }
public static IDealStatusCode ToDealCode(this OrderStatusCode code) { return(((IOrderStatusCode)code).ToDealCode()); }
public override bool Execute(OrderTaskContext context) { var result = true; if (context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth > 0) { List <OrderTransaction> transactions = context.HccApp.OrderServices.Transactions .FindForOrder(context.Order.bvin) .OrderByDescending(x => x.TimeStampUtc) .ToList(); decimal dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; foreach (OrderTransaction p in transactions) { if (p.Action == ActionType.GiftCardInfo) { // if we already have an auth or charge on the card, skip if (p.HasSuccessfulLinkedAction(ActionType.GiftCardDecrease, transactions) || p.HasSuccessfulLinkedAction(ActionType.GiftCardCapture, transactions) || p.HasSuccessfulLinkedAction(ActionType.GiftCardHold, transactions)) { var note = new OrderNote(); note.IsPublic = false; note.Note = "Skipping receive for gift card info because auth or charge already exists. Transaction " + p.Id; context.Order.Notes.Add(note); continue; } try { var payManager = new OrderPaymentManager(context.Order, context.HccApp); var storeSettings = context.HccApp.CurrentStore.Settings; Transaction t = payManager.CreateEmptyTransaction(); t.GiftCard.CardNumber = p.GiftCard.CardNumber; t.Amount = p.Amount; GiftCardGateway proc = storeSettings.PaymentCurrentGiftCardProcessor(); if (storeSettings.PaymentGiftCardAuthorizeOnly && proc.CanAuthorize) { t.Action = ActionType.GiftCardHold; } else { t.Action = ActionType.GiftCardDecrease; } proc.ProcessTransaction(t); OrderTransaction ot = new OrderTransaction(t); ot.LinkedToTransaction = p.IdAsString; context.HccApp.OrderServices.AddPaymentTransactionToOrder(context.Order, ot); if (t.Result.Succeeded == false) { result = false; } } catch (Exception ex) { context.Errors.Add(new WorkflowMessage("Exception During Receive Gift Card", ex.Message + ex.StackTrace, false)); OrderNote note = new OrderNote(); note.IsPublic = false; note.Note = "EXCEPTION: " + ex.Message + " | " + ex.StackTrace; context.Order.Notes.Add(note); } dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; //Amount required in order is already charged. No need to charge on other transactions if (dueAmount <= 0) { break; } } } } else { var note = new OrderNote(); note.IsPublic = false; note.Note = "Amount due was less than zero. Skipping receive gift cards"; context.Order.Notes.Add(note); } if (!result) { string errorString = "An error occurred while attempting to process your gift card. Please check your payment information and try again"; context.Errors.Add(new WorkflowMessage("Receive Gift Card Failed", errorString, true)); // Failure Status Code string failCode = OrderStatusCode.OnHold; OrderStatusCode c = OrderStatusCode.FindByBvin(failCode); if (c != null) { context.Order.StatusCode = c.Bvin; context.Order.StatusName = c.StatusName; } } return(result); }
public static OrderStatusCode OrderStatusCode(int? counter) { var rtValue = new OrderStatusCode(); rtValue.Name = "Name" + counter.Extra(); return rtValue; }
public override bool Execute(OrderTaskContext context) { bool result = true; if (context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth > 0) { //Use the last transaction entered by customer first List <OrderTransaction> transactions = context.HccApp.OrderServices.Transactions .FindForOrder(context.Order.bvin) .OrderByDescending(x => x.TimeStampUtc) .ToList(); decimal dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; foreach (OrderTransaction p in transactions) { if (p.Action == ActionType.CreditCardInfo) { // if we already have an auth or charge on the card, skip if (p.HasSuccessfulLinkedAction(ActionType.CreditCardCharge, transactions) || p.HasSuccessfulLinkedAction(ActionType.CreditCardHold, transactions)) { OrderNote note = new OrderNote(); note.IsPublic = false; note.Note = "Skipping receive for credit card info because auth or charge already exists. Transaction " + p.Id; context.Order.Notes.Add(note); continue; } result &= ProcessTransaction(context, p); if (result == true) { dueAmount = context.HccApp.OrderServices.PaymentSummary(context.Order).AmountDueWithAuth; //Due amount is already charged, no need to charge other cards if (dueAmount <= 0) { break; } } } } } else { OrderNote note = new OrderNote(); note.IsPublic = false; note.Note = "Amount due was less than zero. Skipping receive credit cards"; context.Order.Notes.Add(note); } if (!result) { string errorString = "An error occurred while attempting to process your credit card. Please check your payment information and try again"; context.Errors.Add(new WorkflowMessage("Receive Card Failed", errorString, true)); string failCode = OrderStatusCode.OnHold; OrderStatusCode c = OrderStatusCode.FindByBvin(failCode); if (c != null) { context.Order.StatusCode = c.Bvin; context.Order.StatusName = c.StatusName; } } return(result); }
public async Task <UpdateOrderResponse> UpdateOrderStatus(string token, string order_id, OrderStatusCode order_status) { if (string.IsNullOrWhiteSpace(token)) { throw new ArgumentException("Invalid token provided", nameof(token)); } if (string.IsNullOrWhiteSpace(order_id)) { throw new ArgumentException("Invalid order_id provided", nameof(order_id)); } if (order_status == OrderStatusCode.Undefined) { throw new ArgumentException("Invalid order_status provided", nameof(order_status)); } var uriBuilder = new UriBuilder(baseUri); uriBuilder.Path = "api/orders/api-update-order-status"; var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["order_status"] = ((int)order_status).ToString(); query["order_id"] = order_id; uriBuilder.Query = query.ToString(); var request = new HttpRequestMessage() { RequestUri = uriBuilder.Uri, Method = HttpMethod.Post }; request.Headers.Add("token", token); var response = await this._httpClient.SendAsync(request); //TODO: Do they actually send back an error code, not sure, need to handle this. response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); var returnVal = JsonConvert.DeserializeObject <UpdateOrderResponse>(responseJson); return(returnVal); }
/// <summary> /// Determines if user has opted out of a selected email /// </summary> /// <param name="preference"></param> /// <param name="role"></param> /// <param name="currentStatus"></param> /// <param name="eventCode"></param> /// <returns>True if should receive email, False if should not receive email</returns> private bool IsMailRequested(EmailPreferences preference, OrderStatusCode role, OrderStatusCode currentStatus, EventCode eventCode, OrderType orderType = null) { // no preference, automatically gets emails if (preference == null) { return(true); } // what is the role of the user we are inspecting switch (role.Id) { case OrderStatusCode.Codes.Requester: // what event is happening switch (eventCode) { case EventCode.Approval: // evaluate the level that is being handled switch (currentStatus.Id) { case OrderStatusCode.Codes.Approver: return(preference.RequesterApproverApproved); case OrderStatusCode.Codes.ConditionalApprover: return(preference.RequesterApproverApproved); case OrderStatusCode.Codes.AccountManager: return(preference.RequesterAccountManagerApproved); // this technically doesn't exist, gets completed at purchaser level //case OrderStatusCode.Codes.Purchaser: return preference.RequesterPurchaserAction; //case OrderStatusCode.Codes.Complete: return preference.RequesterKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) default: return(true); } case EventCode.Update: switch (currentStatus.Id) { case OrderStatusCode.Codes.Approver: return(preference.RequesterApproverChanged); case OrderStatusCode.Codes.ConditionalApprover: return(preference.RequesterApproverChanged); case OrderStatusCode.Codes.AccountManager: return(preference.RequesterAccountManagerChanged); case OrderStatusCode.Codes.Purchaser: return(preference.RequesterPurchaserChanged); default: return(true); } case EventCode.Cancelled: // there is no option, user always receives this event return(true); case EventCode.Complete: return(preference.RequesterPurchaserAction); //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Received: return(preference.RequesterReceived); case EventCode.Paid: return(preference.RequesterPaid); } break; case OrderStatusCode.Codes.Approver: // evaluate the event switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.AccountManager: return(preference.ApproverAccountManagerApproved); case OrderStatusCode.Codes.Purchaser: return(preference.ApproverPurchaserProcessed); //case OrderStatusCode.Codes.Complete: return preference.ApproverKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? case OrderStatusCode.Codes.Complete: return(preference.ApproverPurchaserProcessed); default: return(false); } case EventCode.Update: // this email is turned off, no email exists return(false); case EventCode.Cancelled: // this email is turned off, no email exists return(false); // this technically doesn't exist, since a "complete" order is an approval at purchaser level, see switch statement in approval event. case EventCode.Complete: return(preference.ApproverPurchaserProcessed); //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Arrival: return(preference.ApproverOrderArrive); // no received status for approver case EventCode.Received: return(false); case EventCode.Paid: return(false); default: return(false); } case OrderStatusCode.Codes.ConditionalApprover: //Copied code from Approver above... Otherwise this was always returning true... // evaluate the event switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.AccountManager: return(preference.ApproverAccountManagerApproved); case OrderStatusCode.Codes.Purchaser: return(preference.ApproverPurchaserProcessed); //case OrderStatusCode.Codes.Complete: return preference.ApproverKualiApproved; //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? case OrderStatusCode.Codes.Complete: return(preference.ApproverPurchaserProcessed); default: return(false); } case EventCode.Update: // this email is turned off, no email exists return(false); case EventCode.Cancelled: // this email is turned off, no email exists return(false); // this technically doesn't exist, since a "complete" order is an approval at purchaser level, see switch statement in approval event. case EventCode.Complete: return(preference.ApproverPurchaserProcessed); //case EventCode.KualiUpdate: // //TODO: add in kuali stuff // break; case EventCode.Arrival: return(preference.ApproverOrderArrive); // no received status for approver case EventCode.Received: return(false); case EventCode.Paid: return(false); default: return(false); } break; case OrderStatusCode.Codes.AccountManager: switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.Purchaser: return(preference.AccountManagerPurchaserProcessed); case OrderStatusCode.Codes.Complete: return(preference.AccountManagerPurchaserProcessed); //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? default: return(true); } case EventCode.Update: // no email exists return(false); case EventCode.Cancelled: // no email exists return(false); case EventCode.Complete: return(preference.AccountManagerPurchaserProcessed); //case EventCode.KualiUpdate: // //TODO: Add in kuali stuff // break; case EventCode.Arrival: return(preference.AccountManagerOrderArrive); // account manager doesn't have any emails fror received. case EventCode.Received: return(false); case EventCode.Paid: return(false); default: return(false); } case OrderStatusCode.Codes.Purchaser: switch (eventCode) { case EventCode.Approval: switch (currentStatus.Id) { case OrderStatusCode.Codes.Complete: return(preference.PurchaserKualiApproved); //Done: OrderStatusCode.Codes.Complete (Kuali Approved) or Request Completed (Look at Email Preferences Page) ? } // no email exists return(false); case EventCode.Update: // no email exists return(false); case EventCode.Cancelled: // no email exists return(false); //case EventCode.KualiUpdate: // //TODO: Add in Kuali Stuff // break; case EventCode.Arrival: return(preference.PurchaserOrderArrive); case EventCode.Received: switch (orderType.Id) { case "KFS": return(preference.PurchaserKfsItemReceived); case "PC": return(preference.PurchaserPCardItemReceived); case "CS": return(preference.PurchaserCampusServicesItemReceived); default: return(false); } case EventCode.Paid: switch (orderType.Id) { case "KFS": return(preference.PurchaserKfsItemPaid); case "PC": return(preference.PurchaserPCardItemPaid); case "CS": return(preference.PurchaserCampusServicesItemPaid); default: return(false); } default: return(false); } } // default receive email return(true); }