Пример #1
0
 public DeleteResult Delete(Guid id)
 {
     try
     {
         Connector.IsTransaction = true;
         PartnerCardDTO card   = ReadById(id);
         bool           result = false;
         if (card != null)
         {
             CardService cardService = new CardService();
             cardService.Delete(card.Partner.StripeId, card.StripeId);
             result = Repository.Delete(id);
             Connector.CommitTransaction();
         }
         else
         {
             Connector.RollbackTransaction();
         }
         return(result ? DeleteResult.OK : DeleteResult.NotFound);
     }
     catch (Exception exception)
     {
         Connector.RollbackTransaction();
         throw exception;
     }
 }
Пример #2
0
 public void Insert(PartnerCardDTO card, out Guid?id)
 {
     id = Connector.ExecuteScalar <Guid?>(insertQuery, new Dictionary <string, object>()
     {
         { "Partner", card.Partner.Id },
         { "StripeId", card.StripeId }
     });
 }
Пример #3
0
        public PartnerCardDTO ReadById(Guid id)
        {
            PartnerCardDTO card = Repository.SelectById(id);

            if (card != null)
            {
                card.StripeCard = GetStripeCard(card);
            }
            return(card);
        }
Пример #4
0
        public AddCardResult AddCard(PartnerDTO partner, string tokenId)
        {
            PartnerCardBLL cardBLL = new PartnerCardBLL(Connector);
            PartnerCardDTO card    = new PartnerCardDTO()
            {
                Partner  = partner,
                StripeId = tokenId
            };

            PartnerCardBLL.CreateResult result = cardBLL.Create(card);
            return((AddCardResult)(byte)result);
        }
        public ActionResult DeleteCard(Guid id)
        {
            PartnerBLL partnerBLL = new PartnerBLL(WebApp.Connector);

            if (Request.HttpMethod == "GET")
            {
                PartnerCardDTO card = partnerBLL.ReadCardById(Account, id);
                return(card != null?View(card) as ActionResult : HttpNotFound());
            }
            else
            {
                PartnerBLL.DeleteCardResult result = partnerBLL.DeleteCard(Account, id);
                switch (result)
                {
                case PartnerBLL.DeleteCardResult.OK:
                    TempData["Result"] = "CardHasBeenDeleted";
                    return(RedirectToAction("MyCards"));

                case PartnerBLL.DeleteCardResult.NotFound: return(HttpNotFound());

                default: return(BadRequest());
                }
            }
        }
Пример #6
0
        public CreateResult Create(PartnerCardDTO card)
        {
            CreateResult result        = default;
            CardService  cardService   = new CardService();
            TokenService tokenService  = new TokenService();
            Token        stripeToken   = tokenService.Get(card.StripeId);
            Card         stripeNewCard = stripeToken.Card;

            if (stripeNewCard.Funding == "credit")
            {
                Connector.IsTransaction = true;
                try
                {
                    PartnerDTO partner         = card.Partner;
                    string     partnerStripeId = partner.StripeId;
                    if (partnerStripeId == null)
                    {
                        CustomerService customerService = new CustomerService();
                        PartnerBLL      partnerBLL      = new PartnerBLL(Connector);
                        Customer        customer        = customerService.Create(new CustomerCreateOptions()
                        {
                            Email = partner.EmailAddress
                        });
                        partner.StripeId = customer.Id;
                        partnerStripeId  = partner.StripeId;
                        partnerBLL.Update(card.Partner.Id, new Dictionary <string, object> {
                            { "StripeId", partner.StripeId }
                        });
                    }
                    IEnumerable <Card> stripeCards = cardService.List(partnerStripeId);
                    if (stripeCards.Count() < 10)
                    {
                        bool hasAlreadyBeenAdded = false;
                        foreach (Card stripeCard in stripeCards)
                        {
                            if (stripeCard.Fingerprint == stripeNewCard.Fingerprint)
                            {
                                hasAlreadyBeenAdded = true;
                                break;
                            }
                        }
                        if (!hasAlreadyBeenAdded)
                        {
                            CardCreateOptions cardCreateOptions = new CardCreateOptions()
                            {
                                SourceToken = card.StripeId
                            };
                            stripeNewCard = cardService.Create(card.Partner.StripeId, cardCreateOptions);
                            card.StripeId = stripeNewCard.Id;
                            Repository.Insert(card, out Guid? id);
                            card.Id = id.Value;
                            result  = CreateResult.OK;
                        }
                        else
                        {
                            result = CreateResult.CardHasAlreadyBeenAdded;
                        }
                        Connector.CommitTransaction();
                    }
                    else
                    {
                        Connector.RollbackTransaction();
                        result = CreateResult.MaximumAmountOfCardsReached;
                    }
                }
                catch (Exception exception)
                {
                    Connector.RollbackTransaction();
                    throw exception;
                }
            }
            else
            {
                result = CreateResult.CardIsNotCredit;
            }
            return(result);
        }
Пример #7
0
 public Card GetStripeCard(PartnerCardDTO card, CardService cardService) => cardService.Get(card.Partner.StripeId, card.StripeId);
Пример #8
0
 public Card GetStripeCard(PartnerCardDTO card) => GetStripeCard(card, new CardService());