Ejemplo n.º 1
0
        public ActionResult CreateTransaction(FormCollection collection)
        {
            var pathToTemplates = Server.MapPath("/Modules/Teeyoot.Module/Content/message-templates/");
            var pathToMedia = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/');

            var setting = _paymentSettingsService.GetAllSettigns()
                .FirstOrDefault(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id);

            var gateway = new BraintreeGateway
            {
                Environment = Braintree.Environment.SANDBOX,
                PublicKey = setting.PublicKey,
                PrivateKey = setting.PrivateKey,
                MerchantId = setting.MerchantId
            };

            var countryId = Convert.ToInt32(collection["Country"]);
            var country = _countryRepository.Get(countryId);

            //Result<Transaction> result;
            //var nonceId = Request.Form["payment_method_nonce"];
            switch (collection["paumentMeth"])
            {
                case "2":
                {
                    var requestPayPal = new TransactionRequest
                    {
                        Amount = 1000.0M,
                        PaymentMethodNonce = "fake-valid-nonce",
                        Options = new TransactionOptionsRequest
                        {
                            SubmitForSettlement = false,
                            StoreInVault = true
                        }
                    };
                    gateway.Transaction.Sale(requestPayPal);
                    break;
                }
                case "1":
                {
                    var requestCard = new TransactionRequest
                    {
                        Amount = 1000.0M, //Здесь указывается сумма транзакции в USD
                        CreditCard = new TransactionCreditCardRequest
                        {
                            Number = collection["number"],
                            CVV = collection["cvv"],
                            ExpirationMonth = collection["month"],
                            ExpirationYear = collection["year"]
                        },
                        Options = new TransactionOptionsRequest
                        {
                            StoreInVault = true,
                            SubmitForSettlement = false
                        }
                    };
                    gateway.Transaction.Sale(requestCard);
                    break;
                }
                case "4":
                    //Отправляем сообщение админу
                    break;
                case "3":
                {
                    var method = collection["Bank"];
                    var meth1 = collection["paumentMeth"];
                    var id1 = int.Parse(collection["OrderId"]);
                    var orderMol = _orderService.GetOrderById(id1);
                    var campId = orderMol.Products.First().CampaignProductRecord.CampaignRecord_Id;
                    orderMol.Email = collection["Email"];
                    orderMol.FirstName = collection["FirstName"];
                    orderMol.LastName = collection["LastName"];
                    orderMol.StreetAddress = collection["StreetAddress"] + " " + collection["StreetAddress2"];
                    orderMol.City = collection["City"];
                    orderMol.State = collection["State"];
                    orderMol.PostalCode = collection["PostalCode"];
                    orderMol.Country = country.Name;
                    orderMol.PhoneNumber = collection["PhoneNumber"];
                    orderMol.Reserved = DateTime.UtcNow;
                    orderMol.OrderStatusRecord = _orderStatusRepository
                        .Get(int.Parse(OrderStatus.Unapproved.ToString("d")));

                    if (orderMol.SellerCountry == country)
                    {
                        var deliverySetting = _deliverySettingRepository.Table
                            .First(s => s.State == collection["State"]);

                        orderMol.Delivery = deliverySetting.PostageCost;
                    }
                    else
                    {
                        var deliverySetting = _deliveryInternationalSettingRepository.Table
                            .First(s => s.CountryTo == country);

                        orderMol.Delivery = deliverySetting.DeliveryPrice;
                    }

                    /*
                    if (orderMol.TotalPriceWithPromo > 0)
                    {
                        orderMol.TotalPriceWithPromo = orderMol.TotalPriceWithPromo + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost;
                    }
                    orderMol.TotalPrice = orderMol.TotalPrice + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost - orderMol.Promotion;
                    */
                    orderMol.IsActive = true;
                    if (collection["PromoId"] != null)
                    {
                        var promotion = _promotionService.GetPromotionByPromoId(collection["PromoId"]);
                        promotion.Redeemed = promotion.Redeemed + 1;
                    }

                    // _teeyootMessagingService.SendNewOrderMessageToAdmin(orderMol.Id, pathToMedia, pathToTemplates);
                    //_teeyootMessagingService.SendNewOrderMessageToBuyer(orderMol.Id, pathToMedia, pathToTemplates);

                    var url = Molpay(
                        _orderService.GetOrderById(int.Parse(collection["OrderId"])),
                        country.Name,
                        collection["FirstName"],
                        collection["LastName"],
                        collection["Email"],
                        collection["State"],
                        collection["PhoneNumber"],
                        orderMol.Delivery);

                    return Redirect(url);
                }
                default:
                    throw new ArgumentOutOfRangeException();
            }

            var meth = collection["paumentMeth"];
            var id = int.Parse(collection["OrderId"]);
            var order = _orderService.GetOrderById(id);
            var campaignId = order.Products.First().CampaignProductRecord.CampaignRecord_Id;
            order.Email = collection["Email"];
            order.FirstName = collection["FirstName"];
            order.LastName = collection["LastName"];
            order.StreetAddress = collection["StreetAddress"] + " " + collection["StreetAddress2"];
            order.City = collection["City"];
            order.State = collection["State"];
            order.PostalCode = collection["PostalCode"];
            order.Country = country.Name;
            order.PhoneNumber = collection["PhoneNumber"];
            order.Reserved = DateTime.UtcNow;

            if (order.SellerCountry == country)
            {
                var deliverySetting = _deliverySettingRepository.Table
                    .First(s => s.State == collection["State"]);

                order.Delivery = collection["paumentMeth"] == "4"
                    ? deliverySetting.CodCost
                    : deliverySetting.PostageCost;
            }
            else
            {
                var deliverySetting = _deliveryInternationalSettingRepository.Table
                    .First(s => s.CountryTo == country);

                order.Delivery = deliverySetting.DeliveryPrice;
            }

            /*
            if (order.TotalPriceWithPromo > 0)
            {
                order.TotalPriceWithPromo = order.TotalPriceWithPromo + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost;
            }
             */
            order.OrderStatusRecord = _orderStatusRepository.Table
                .First(s => s.Name == OrderStatus.Approved.ToString());
            /*
            order.TotalPrice = order.TotalPrice + _deliverySettingService.GetAllSettings().FirstOrDefault(s => s.State == collection["State"]).DeliveryCost - order.Promotion;
             */
            order.IsActive = true;
            /*
            var users = _userRepository.Table.ToList();
             */
            _teeyootMessagingService.SendNewOrderMessageToAdmin(order.Id, pathToMedia, pathToTemplates);
            _teeyootMessagingService.SendOrderStatusMessage(pathToTemplates,
                pathToMedia,
                order.Id,
                OrderStatus.Approved.ToString());

            var campaign = _campaignService.GetCampaignById(campaignId);
            var sendMessage = campaign.ProductCountSold <= campaign.ProductMinimumGoal - 1;

            if (campaign.ProductCountSold > campaign.ProductCountGoal - 1)
            {
                campaign.ProductCountSold += order.Products.Sum(p => (int?) p.Count) ?? 0;
                _campaignService.UpdateCampaign(campaign);
            }
            else
            {
                campaign.ProductCountSold += order.Products.Sum(p => (int?) p.Count) ?? 0;
                _campaignService.UpdateCampaign(campaign);
                if ((campaign.ProductCountSold > campaign.ProductMinimumGoal - 1) && sendMessage)
                {
                    _teeyootMessagingService.SendCampaignMetMinimumMessageToBuyers(campaign.Id);
                    _teeyootMessagingService.SendCampaignMetMinimumMessageToSeller(campaign.Id);
                }
            }

            //_orderService.UpdateOrder(order, OrderStatus.Approved);
            if (collection["PromoId"] != null)
            {
                var promotion = _promotionService.GetPromotionByPromoId(collection["PromoId"]);
                promotion.Redeemed = promotion.Redeemed + 1;
            }
            //Transaction transaction = result.Target;
            //ViewData["TransactionId"] = transaction.Id;
            //_notifier.Information(T("The transaction is successful"));

            var commonSettings = _commonSettingsRepository.Table
                .FirstOrDefault(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id);

            if (commonSettings == null)
            {
                _commonSettingsRepository.Create(new CommonSettingsRecord()
                {
                    DoNotAcceptAnyNewCampaigns = false,
                    CountryRecord = _countryService.GetCountryByCulture(_cultureUsed)
                });
                commonSettings = _commonSettingsRepository.Table
                    .First(s => s.CountryRecord.Id == _countryService.GetCountryByCulture(_cultureUsed).Id);
            }

            if (commonSettings.DoNotAcceptAnyNewCampaigns)
            {
                var request = new CheckoutCampaignRequest
                {
                    RequestUtcDate = DateTime.UtcNow,
                    Email = order.Email
                };
                _checkoutRequestRepository.Create(request);
            }

            return RedirectToAction("ReservationComplete",
                new {campaignId = campaign.Id, sellerId = campaign.TeeyootUserId});

            //}
            //else
            //{
            //    _notifier.Information(T("The transaction is failed"));
            //    return RedirectToAction("Payment", new { orderId = collection["OrderPublicId"], promo = collection["PromoId"] });
            //}          
        }
Ejemplo n.º 2
0
        public ActionResult Oops(OopsViewModel viewModel)
        {
            var commonSettings = _commonSettingsRepository.Table.Where(s => s.CommonCulture == cultureUsed).FirstOrDefault();
            if (commonSettings == null)
            {
                _commonSettingsRepository.Create(new CommonSettingsRecord() { DoNotAcceptAnyNewCampaigns = false, CommonCulture = cultureUsed });
                commonSettings = _commonSettingsRepository.Table.Where(s => s.CommonCulture == cultureUsed).First();
            }
            if (!commonSettings.DoNotAcceptAnyNewCampaigns)
            {
                return RedirectToAction("Oops");
            }

            if (!ModelState.IsValidField("Email"))
            {
                TempData[InvalidEmailKey] = true;
                return RedirectToAction("Oops");
            }

            var request = new CheckoutCampaignRequest {RequestUtcDate = DateTime.UtcNow, Email = viewModel.Email};
            _checkoutCampaignRequestRepository.Create(request);

            TempData[SendEmailRequestAcceptedKey] = true;
            return RedirectToAction("Oops");
        }