Exemplo n.º 1
0
        public async Task <IActionResult> Refund(RefundViewModel model)
        {
            var user = await userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{userManager.GetUserId(User)}'.");
            }

            ViewData["Message"] = "";
            var added = refundRepository.AddRefund(new Refund {
                Address = model.Address, Amount = model.Amount, Done = false
            });
            var bc = await blockchain.InvokeContractRequestRefund(NETWORK_TYPE.TESTNET, user.Wif, user.ScriptHash, 10, 2);

            if (bc)
            {
                if (added)
                {
                    ViewData["Message"] = "Transaction and db added";
                    return(View(model));
                }
                ViewData["Message"] = "transaction done, db fail";
                return(View(model));
            }
            ViewData["Message"] = added ? "Refund was requested (only db)" : "Failed to request";
            return(View(model));
        }
Exemplo n.º 2
0
        public OptResult Refund(RefundViewModel vmRefund)
        {
            OptResult rst = null;

            if (vmRefund == null)
            {
                rst = OptResult.Build(ResultCode.ParamError, "参数不能为空");
                return(rst);
            }
            if (ModelState.IsValid == false)
            {
                rst = OptResult.Build(ResultCode.ParamError, ModelState.Parse());
                return(rst);
            }

            var token = base.ParseToken(ActionContext);

            if (string.IsNullOrEmpty(vmRefund.opt))
            {
                vmRefund.opt = token.iss;
            }

            var refundEntity = OOMapper.Map <RefundViewModel, RefundEntity>(vmRefund);

            rst = _cardMoneySrv.Refound(refundEntity);

            return(rst);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Refund(RefundViewModel viewModel)
        {
            var result = await _onlinePayment.RefundCompletelyAsync(viewModel.TrackingNumber);

            // Note: This is just for development and testing.
            // Don't show the actual result object to clients in production environment.
            // Instead, show only the important information such as IsSucceed, Tracking Number and Transaction Code.
            return(View("RefundResult", result));
        }
        public OrderChangeViewModel(RefundViewModel refund)
        {
            ChangeType = OrderChangeTypes.MadeRefund;

            Message    = refund.Amount + " (" + refund.StatusName + ")";
            ChangeDate = refund.Date;
            ChangedBy  = refund.By;
            //ChangedByName = refund.ByName;
        }
Exemplo n.º 5
0
        public ActionResult CreateNewRefund()
        {
            BussinesLayer              bl               = new BussinesLayer(new FinalDB());
            RefundViewModel            refundVM         = new RefundViewModel();
            List <Department>          departmentsModel = bl.GetAllDepartments();
            List <DepartmentViewModel> departmentsVM    = Services.ConverterService.ToDepartmentsViewModel(departmentsModel);

            refundVM.DepartmentsCombo = departmentsVM;
            return(View("CreateNewRefund", refundVM));
        }
Exemplo n.º 6
0
 public MainWindow()
 {
     InitializeComponent();
     viewModelPay                  = new PayViewModel();
     viewModelGetStatus            = new GetStatusViewModel();
     viewModelRefund               = new RefundViewModel();
     this.grdPay.DataContext       = viewModelPay;
     this.grdGetStatus.DataContext = viewModelPay;
     this.grdRefund.DataContext    = viewModelRefund;
 }
Exemplo n.º 7
0
        public ActionResult Refund(RefundViewModel refundViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(refundViewModel));
            }

            var result = Payment.Refund(new RefundInvoice(refundViewModel.OrderNumber, refundViewModel.Amount));

            return(View("RefundResult", result));
        }
Exemplo n.º 8
0
        public ActionResult CreateNewRefund(RefundViewModel refundVM)
        {
            BussinesLayer bl          = new BussinesLayer(new FinalDB());
            string        username    = Session["Username"] as string;
            Refund        refundModel = new Refund();

            refundModel.TeacherUserName = username;
            refundModel.Date            = DateTime.Now;
            refundModel.DepartmentID    = Convert.ToInt32(refundVM.SelectedDepartment);
            refundModel.CourseID        = Convert.ToInt32(refundVM.SelectedCourses);
            refundModel.LecturerName    = refundVM.LecturerName;
            refundModel.IsGrouped       = refundVM.IsGrouped;
            int refundID = bl.AddRefund(refundModel);

            return(RedirectToAction("CreateNewSession", new { refundID = refundID }));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Refund(RefundViewModel viewModel)
        {
            var result = await _onlinePayment.RefundCompletelyAsync(viewModel.TrackingNumber);

            return(View("RefundResult", result));
        }
        public static OrderHistoryViewModel GetByOrderId(IUnitOfWork db,
                                                         ILogService log,
                                                         IWeightService weightService,
                                                         string orderId)
        {
            DTOOrder order = null;

            if (!String.IsNullOrEmpty(orderId))
            {
                orderId = orderId.RemoveWhitespaces();
                var orderNumber = OrderHelper.RemoveOrderNumberFormat(orderId);
                var filter      = new OrderSearchFilter()
                {
                    EqualOrderNumber = orderNumber,
                    IncludeMailInfos = true,
                    IncludeNotify    = false,

                    UnmaskReferenceStyles = false,
                };

                order = db.ItemOrderMappings
                        .GetFilteredOrdersWithItems(weightService, filter)
                        .FirstOrDefault();
            }

            if (order == null)
            {
                return(null);
            }
            else
            {
                var anotherBuyerOrders = new List <OrderLinkViewModel>();
                if (!String.IsNullOrEmpty(order.BuyerEmail))
                {
                    anotherBuyerOrders = db.Orders.GetAll().Where(o => o.BuyerEmail == order.BuyerEmail)
                                         .ToList()
                                         .Where(o => o.Id != order.Id)
                                         .OrderByDescending(o => o.OrderDate)
                                         .Select(o => new OrderLinkViewModel()
                    {
                        OrderId       = o.Id,
                        OrderNumber   = o.AmazonIdentifier,
                        OrderDate     = o.OrderDate,
                        OrderStatus   = o.OrderStatus,
                        Market        = o.Market,
                        MarketplaceId = o.MarketplaceId
                    })
                                         .ToList();
                }

                var comments = db.OrderComments.GetByOrderIdDto(order.Id).ToList();

                var emails = db.Emails.GetAllWithOrder(new EmailSearchFilter()
                {
                    OrderId = orderId
                }).ToList();

                var returnRequests = db.ReturnRequests.GetAll()
                                     .OrderByDescending(r => r.CreateDate)
                                     .Select(r => new ReturnRequestDTO()
                {
                    OrderNumber      = r.OrderNumber,
                    ReceiveDate      = r.ReceiveDate,
                    ItemName         = r.ItemName,
                    CustomerComments = r.CustomerComments,
                    Details          = r.Details,
                    CreateDate       = r.CreateDate,
                    Reason           = r.Reason
                })
                                     .Where(r => r.OrderNumber == order.OrderId)
                                     .ToList();

                var refundRequests = RefundViewModel.GetByOrderId(db, order.OrderId);

                var labels = order.ShippingInfos
                             .Where(i => !String.IsNullOrEmpty(i.LabelPath)
                                    //|| i.LabelPurchaseResult != null //NOTE: in case when bag system shows user issue (keeped twice shippings with labels)
                                    )
                             .ToList();
                labels.AddRange(order.MailInfos);


                var address = order.GetAddressDto();

                var changes = db.OrderChangeHistories.GetByOrderIdDto(order.Id)
                              .ToList()
                              .OrderByDescending(ch => ch.ChangeDate)
                              .Select(ch => new OrderChangeViewModel(ch, emails))
                              .Where(ch => ch.ChangeType != OrderChangeTypes.None) //NOTE: Skipped empty
                              .ToList();

                changes.Add(OrderChangeViewModel.BuildCreateOrderChange(order));
                changes.AddRange(comments.Select(c => new OrderChangeViewModel(c)).ToList());
                changes.AddRange(emails.Select(e => new OrderChangeViewModel(e)).ToList());
                changes.AddRange(labels.SelectMany(l => OrderChangeViewModel.BuildChanges(l)).ToList());
                changes.AddRange(refundRequests.Select(r => new OrderChangeViewModel(r)).ToList());
                changes.AddRange(returnRequests.Select(r => new OrderChangeViewModel(r)).ToList());

                return(new OrderHistoryViewModel
                {
                    //Notes =  string.Format("{0} {1}", order.OrderId, itemsNotes),
                    OrderID = order.OrderId,
                    OrderEntityId = order.Id,
                    OrderDate = order.OrderDate,
                    Market = (MarketType)order.Market,
                    MarketplaceId = order.MarketplaceId,

                    WeightLb = (int)Math.Floor(order.WeightD / 16),
                    WeightOz = order.WeightD % 16,
                    TotalPrice = order.TotalPrice,
                    PriceCurrency = PriceHelper.FormatCurrency(order.TotalPriceCurrency),

                    Items = order.Items.Select(i => new OrderItemViewModel(i, false, false)).ToList(),
                    Changes = changes.OrderByDescending(c => c.ChangeDate).ToList(),

                    AnotherOrders = anotherBuyerOrders,

                    ToAddress = new AddressViewModel(address),
                });
            }
        }
Exemplo n.º 11
0
        public static OrderQuickSummaryViewModel GetByOrderId(IUnitOfWork db,
                                                              ILogService log,
                                                              IWeightService weightService,
                                                              string orderId)
        {
            DTOOrder order = null;

            if (!String.IsNullOrEmpty(orderId))
            {
                orderId = orderId.RemoveWhitespaces();
                var orderNumber = OrderHelper.RemoveOrderNumberFormat(orderId);
                var filter      = new OrderSearchFilter()
                {
                    EqualOrderNumber = orderNumber,
                    IncludeMailInfos = true,
                    IncludeNotify    = false,

                    UnmaskReferenceStyles = false,
                };

                order = db.ItemOrderMappings
                        .GetFilteredOrdersWithItems(weightService, filter)
                        .FirstOrDefault();
            }

            if (order == null)
            {
                return(null);
            }
            else
            {
                var refundRequestList = RefundViewModel.GetByOrderId(db, order.OrderId);

                var shippingPrice = 0M;

                var activeShippings = order.ShippingInfos.Where(i => i.IsActive).ToList();
                activeShippings.AddRange(order.MailInfos);
                activeShippings = activeShippings.OrderBy(sh => sh.LabelPurchaseDate).ToList();
                //if (order.MailInfos.Any(m => !m.LabelCanceled)
                //    && order.ShippingInfos.All(sh => String.IsNullOrEmpty(sh.LabelPath) || sh.LabelCanceled))
                //{
                //    var mailShipping = order.MailInfos.OrderBy(m => m.LabelPurchaseDate).FirstOrDefault(l => !l.LabelCanceled);
                //    activeShippings = new List<OrderShippingInfoDTO>() { mailShipping };
                //}
                //var mainActiveShipping = activeShippings.FirstOrDefault();
                //var shipmentProviderType = mainActiveShipping != null ? mainActiveShipping.ShipmentProviderType : (int)Core.Models.Settings.ShipmentProviderType.Stamps;
                var address = order.GetAddressDto();

                return(new OrderQuickSummaryViewModel()
                {
                    OrderID = order.OrderId,
                    OrderEntityId = order.Id,
                    OrderDate = order.OrderDate,
                    OrderStatus = order.OrderStatus,
                    Market = (MarketType)order.Market,
                    MarketplaceId = order.MarketplaceId,

                    OrderIsOnHold = order.OnHold,

                    WeightLb = (int)Math.Floor(order.WeightD / 16),
                    WeightOz = order.WeightD % 16,

                    TrackingNumbers = activeShippings.Where(t => !String.IsNullOrEmpty(t.TrackingNumber)).Select(t => new LabelViewModel()
                    {
                        TrackingNumber = t.TrackingNumber,
                        Carrier = t.ShippingMethod.CarrierName,
                        FromType = (LabelFromType)t.LabelFromType,
                        TrackingStatusSource = t.TrackingStateSource,
                        ShippingDate = t.ShippingDate,
                        EstDeliveryDate = t.EstimatedDeliveryDate,
                        ActualDeliveryDate = t.ActualDeliveryDate,
                        LastTrackingStateUpdateDate = t.LastTrackingRequestDate,
                        IsCanceled = t.CancelLabelRequested || t.LabelCanceled,
                        DeliveryStatusMessage = GetDeliveryStatus(order.LatestDeliveryDate,
                                                                  t.ActualDeliveryDate,
                                                                  t.TrackingStateDate,
                                                                  t.DeliveredStatus == (int)DeliveredStatusEnum.DeliveredToSender),
                        ShippingMethodName = t.ShippingMethod != null
                            ? ShippingUtils.PrepareMethodNameToDisplay(t.ShippingMethod.Name, t.DeliveryDaysInfo) : string.Empty,
                        ShippingProviderName = ShipmentProviderHelper.GetName((ShipmentProviderType)t.ShipmentProviderType),
                    }).ToList(),

                    PriceCurrency = PriceHelper.FormatCurrency(order.TotalPriceCurrency),

                    ExpectedShipDate = order.LatestShipDate,
                    ExpectedDeliveryDate = order.LatestDeliveryDate,

                    //ShippingMethodName = mainActiveShipping != null && mainActiveShipping.ShippingMethod != null
                    //    ? ShippingUtils.PrepareMethodNameToDisplay(mainActiveShipping.ShippingMethod.Name, mainActiveShipping.DeliveryDaysInfo) : string.Empty,
                    //ShippingProviderName = ShipmentProviderHelper.GetName((ShipmentProviderType)shipmentProviderType),
                    //ShippingDate = activeShippings.Where(i => i.IsActive).Max(i => i.ShippingDate),

                    //DeliveryDate = mainActiveShipping != null ? mainActiveShipping.ActualDeliveryDate : null,
                    //DeliveryStatus = GetDeliveryStatus(order.LatestDeliveryDate,
                    //    mainActiveShipping != null ? mainActiveShipping.ActualDeliveryDate : null,
                    //    mainActiveShipping != null ? mainActiveShipping.TrackingStateDate : null,
                    //    mainActiveShipping != null ? mainActiveShipping.DeliveredStatus == (int)DeliveredStatusEnum.DeliveredToSender : false),

                    Refunds = refundRequestList,

                    Items = order.Items.Select(i => new OrderItemViewModel(i, false, false)).ToList(),

                    ToAddress = address,
                });
            }
        }