コード例 #1
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
        public OrderOperationStatus AddVoucherToOrder(string voucherCode)
        {
            var orderOperationStatus=new OrderOperationStatus();
            try
            {
                var voucherOperationStatus = _voucherRepository.GetVoucher(voucherCode);

                if (!voucherOperationStatus.Status)
                {
                    orderOperationStatus =
                        (OrderOperationStatus) orderOperationStatus.InjectFrom(voucherOperationStatus);
                }
                else
                {
                    Voucher voucher = voucherOperationStatus.Voucher;

                    var contactOperationStatus = _contactService.GetContact();
                    if (!contactOperationStatus.Status)
                    {
                        orderOperationStatus =
                            (OrderOperationStatus) orderOperationStatus.InjectFrom(contactOperationStatus);
                    }
                    else
                    {
                        orderOperationStatus = _orderCoordinator.GetOrder(contactOperationStatus.Contact, voucher.OrderIndex);
                        if (orderOperationStatus.Status)
                        {
                            var order = orderOperationStatus.Order;
                            order.VoucherId = voucher.VoucherId;
                            order.VoucherAmount = voucher.Amount;
                            order.VoucherPercentage = voucher.Percentage;
                            order.VoucherPerItemAmount = voucher.PerItemAmount;
                            order.VoucherProductCategoryFilter = voucher.ProductCategoryFilter;
                            order.VoucherCategoryFilter = voucher.VoucherCategoryFilter;
                            order.VoucherMinimumItems = voucher.MinimumItems;
                            order.VoucherMinimumPayment = voucher.MinimumPayment;
                            order.VoucherInfo = "Voucher used: " + voucher.Title;
                            orderOperationStatus = _orderCoordinator.SaveOrder(order, false);
                            if (orderOperationStatus.Status)
                                orderOperationStatus.Message = "Voucher " + voucher.Title + " added successfully!";
                            if (order.GetVoucherTotal() == 0)
                                orderOperationStatus.Message +=
                                "  However, none of your current items are discounted with this voucher";

                        }

                    }
                }
            }
            catch (Exception e)
            {
                orderOperationStatus.LogFailedOperation(e,"An error has occurred adding the voucher");
            }
            return orderOperationStatus;
        }
コード例 #2
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
 private OrderOperationStatus AddProductToOrder(int productId, int optionId, int quantity, DateTime? startDate,
     DateTime? finishDate, string paymentType,
     decimal? paymentAmount)
 {
     var orderOperationStatus = new OrderOperationStatus();
     try
     {
         //get the product
         var productOperationStatus = GetProduct(productId, optionId, quantity, startDate, finishDate,
             paymentType, paymentAmount);
         var product = productOperationStatus.Product;
         if (!productOperationStatus.Status)
             return (OrderOperationStatus) orderOperationStatus.InjectFrom(productOperationStatus);
         if (paymentAmount == null) paymentAmount = GetPaymentAmount(product, paymentType);
         orderOperationStatus = AddProductToOrder(product, quantity, paymentType, (decimal) paymentAmount);
     }
     catch (Exception e)
     {
         orderOperationStatus.LogFailedOperation(e, "An error has occurred adding the product to the order");
     }
     return orderOperationStatus;
 }
コード例 #3
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
        public OrderOperationStatus UpdateGiftAidAgreement(bool agreementStatus, int orderIndex)
        {
            var orderOperationStatus = new OrderOperationStatus();
            try
            {
                var contactOperationStatus = _contactService.GetContact();
                if (contactOperationStatus.Status)
                {
                    //orderOperationStatus =
                    //    (OrderOperationStatus) orderOperationStatus.InjectFrom(contactOperationStatus);
                    //}
                    //else
                    //{
                    var contact = contactOperationStatus.Contact;
                    if (contact.ContactId > 0)
                    {
                        contact.GiftAidAgreement = agreementStatus;
                        contactOperationStatus = _contactService.SaveContact(contact);
                        if (!contactOperationStatus.Status)
                        {
                            orderOperationStatus =
                                (OrderOperationStatus) orderOperationStatus.InjectFrom(contactOperationStatus);
                            return orderOperationStatus;
                        }
                    }
                }
                orderOperationStatus = _orderCoordinator.GetOrder(contactOperationStatus.Contact, orderIndex);
                if (orderOperationStatus.Status)
                {
                    var order = orderOperationStatus.Order;
                    order.GiftAidAgreement = agreementStatus;
                    orderOperationStatus = _orderCoordinator.SaveOrder(order, false);
                    if (orderOperationStatus.Status)
                        orderOperationStatus.Message = "Gift Aid agreement updated successfully!";
                }

            }
            catch (Exception e)
            {
                orderOperationStatus.LogFailedOperation(e, "An error has occurred updating the Gift Aid agreement");
            }
            return orderOperationStatus;
        }
コード例 #4
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
        public OrderOperationStatus Remove(int productId, int optionId)
        {
            var orderOperationStatus = new OrderOperationStatus();
            try
            {
                //get the product
                var productOperationStatus = _productRepository.GetProduct(productId, optionId);
                if (!productOperationStatus.Status)
                    return (OrderOperationStatus) orderOperationStatus.InjectFrom(productOperationStatus);

                Product product = productOperationStatus.Product;

                //get the contact
                var contactOperationStatus = _contactService.GetContact();
                if (!contactOperationStatus.Status)
                    return (OrderOperationStatus) new OrderOperationStatus().InjectFrom(contactOperationStatus);
                var contact = contactOperationStatus.Contact;

                //get the order
                orderOperationStatus = _orderCoordinator.GetOrder(contact,product.OrderIndex);
                var order = orderOperationStatus.Order;
                orderOperationStatus=order.Remove(product);
                var orderLine = orderOperationStatus.OrderLine;
                if (orderOperationStatus.Status)
                {
                    order = _orderCoordinator.UpdateOrderWithShippingAndDiscounts(order, contact);
                    orderOperationStatus = _orderCoordinator.SaveOrder(order,true);
                    orderOperationStatus.OrderLine = orderLine;
                    orderOperationStatus.OrderLineDeleted = true;
                    orderOperationStatus.Message = "Removed " + product.Title + " successfully!";
                }
            }
            catch (Exception e)
            {
                orderOperationStatus.LogFailedOperation(e,"An error has occurred saving the order");
            }
            return orderOperationStatus;
        }
コード例 #5
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
        public OrderOperationStatus GetOrder(int orderIndex)
        {
            var orderOperationStatus = new OrderOperationStatus();
            try
            {

                var contactOperationStatus = _contactService.GetContact();
                if (!contactOperationStatus.Status)
                    return (OrderOperationStatus) orderOperationStatus.InjectFrom(contactOperationStatus);

                var contact = contactOperationStatus.Contact;

                orderOperationStatus = _orderCoordinator.GetOrder(contactOperationStatus.Contact, orderIndex);

                if (orderOperationStatus.Status)
                {
                    var order = orderOperationStatus.Order;
                    order.ContactDetails = contact;
                    order.UserName = contact.UserName;
                    //update the shipping and discounts
                    order = _orderCoordinator.UpdateOrderWithShippingAndDiscounts(order, contact);
                    orderOperationStatus = _orderCoordinator.SaveOrder(order, false);
                    if (orderOperationStatus.Status)
                    {
                        //add the product options to the order
                        foreach (var orderLine in order.CurrentOrderLines)
                        {
                            var productOperationStatus = _productRepository.GetProductOptions(orderLine.ProductId);
                            if (productOperationStatus.Status)
                                orderLine.ProductOptions = productOperationStatus.ProductOptions;
                            var paymentOperationStatus = _productRepository.GetPaymentOptions(orderLine.ProductId,
                                orderLine.ProductOptionId, orderLine.ProductLineTotal, orderLine.Quantity);
                            if (paymentOperationStatus.Status)
                                orderLine.PaymentOptions = paymentOperationStatus.PaymentOptions;
                        }

                    }
                    orderOperationStatus.Order = order;
                }
            }
            catch (Exception e)
            {
                orderOperationStatus.LogFailedOperation(e, "An error has occurred retrieving the order");
            }
            return orderOperationStatus;
        }
コード例 #6
0
ファイル: ECommerceService.cs プロジェクト: jamesdrever/cpx
        public OrderOperationStatus ConfirmOrder(int orderIndex)
        {
            var orderOperationStatus = new OrderOperationStatus();
            try
            {
                var contactOperationStatus = _contactService.GetContact();

                if (!contactOperationStatus.Status)
                {
                    orderOperationStatus =
                        (OrderOperationStatus) orderOperationStatus.InjectFrom(contactOperationStatus);
                }
                else
                {
                    orderOperationStatus = _orderCoordinator.GetOrder(contactOperationStatus.Contact, orderIndex);
                    if (orderOperationStatus.Status)
                    {
                        var order = orderOperationStatus.Order;
                        order.Status = "CONF";
                        order.UpdateOrderLines("CONF");
                        orderOperationStatus = _orderCoordinator.SaveOrder(order, true);
                        if (orderOperationStatus.Status)
                            orderOperationStatus.Message = "Thankyou for confirming your order.";

                    }
                }
            }
            catch (Exception e)
            {
                orderOperationStatus = OperationStatusExceptionHelper<OrderOperationStatus>
                    .CreateFromException("An error has occurred updating the order line", e);

            }
            return orderOperationStatus;
        }