Exemplo n.º 1
0
        public async Task <ActionResult <MessageModel> > CreateSupportTicket(ClaimsPrincipal currentUser, string username, SupportTicket ticket)
        {
            if (currentUser.HasClaim(c => c.Type == "Roles"))
            {
                var userAuthenticate = await _context.Users.FirstOrDefaultAsync(x => x.Username == username);

                if (userAuthenticate != null)
                {
                    if (ticket != null)
                    {
                        if (ticket.Title == null || ticket.Message == null)
                        {
                            responseMessage.Message = "Ticket must have title and message!";
                            return(StatusCode(400, responseMessage));
                        }
                        if (ticket.Title.Length > 2 && ticket.Message.Length > 2 && ticket.Title.Length < 60 && ticket.Message.Length < 200)
                        {
                            ticket.Date        = DateTime.Now;
                            ticket.UserId      = userAuthenticate.Id;
                            ticket.Date        = DateTime.Now;
                            ticket.HasResponce = false;
                            _context.Add(ticket);
                            await _context.SaveChangesAsync();

                            responseMessage.Message = "Ticket created succesfully";
                            return(StatusCode(200, responseMessage));
                        }
                        else
                        {
                            responseMessage.Message = "Ticket must have title and message less than 200 symbols!";
                            return(StatusCode(400, responseMessage));
                        }
                    }
                    else
                    {
                        responseMessage.Message = "Invalid Ticket Input";
                        return(StatusCode(400, responseMessage));
                    }
                }
                else
                {
                    responseMessage.Message = "User not found";
                    return(StatusCode(404, responseMessage));
                }
            }
            else
            {
                responseMessage.Message = "You are not authorized to do such actions";
                return(StatusCode(400, responseMessage));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult <MessageModel> > CreateDebitCard(ClaimsPrincipal currentUser, string username, ChargeAccount bankAccount, Card card)
        {
            string role = "";

            if (currentUser.HasClaim(c => c.Type == "Roles"))
            {
                string userRole = currentUser.Claims.FirstOrDefault(currentUser => currentUser.Type == "Roles").Value;
                role = userRole;
            }

            if (role == "Admin")
            {
                var userAuthenticate = await dbContext.Users.FirstOrDefaultAsync(x => x.Username == username);

                Card          cardExists        = null;
                ChargeAccount bankAccountExists = null;

                if (userAuthenticate != null)
                {
                    try
                    {
                        bankAccountExists = await dbContext.ChargeAccounts.FirstOrDefaultAsync(x => x.Iban == bankAccount.Iban);

                        if (bankAccountExists == null)
                        {
                            responseMessage.Message = "No Bank Account found! Invalid Iban!";
                            return(StatusCode(404, responseMessage));
                        }
                        cardExists = await dbContext.Cards.FirstOrDefaultAsync(x => x.ChargeAccountId == bankAccountExists.Id);
                    }
                    catch (NullReferenceException)
                    {
                        responseMessage.Message = "No Bank Account found! Invalid Iban!";
                        return(StatusCode(404, responseMessage));
                    }
                }


                if (cardExists == null)
                {
                    try
                    {
                        if (ValidateUser(userAuthenticate))
                        {
                            if (card == null)
                            {
                                card = new Card();
                            }

                            card.ChargeAccountId = bankAccountExists.Id;
                            card.CardNumber      = GenerateCardInfo.GenerateNumber(11);
                            var CVV = GenerateCardInfo.GenerateCVV(3);
                            card.Cvv = _BCrypt.HashPassword(CVV);
                            card.CardExpirationDate = DateTime.Now.AddMonths(60);
                            dbContext.Add(card);
                            await dbContext.SaveChangesAsync();

                            responseMessage.Message = "Debit Card created succesfully!";
                            return(StatusCode(200, responseMessage));
                        }
                        else if (ValidateUser(userAuthenticate) == false)
                        {
                            responseMessage.Message = "User not found!";
                            return(StatusCode(404, responseMessage));
                        }
                    }
                    catch (NullReferenceException)
                    {
                        responseMessage.Message = "User not found!";
                        return(StatusCode(404, responseMessage));
                    }
                }

                responseMessage.Message = "User already has a Debit Card!";
                return(StatusCode(400, responseMessage));
            }
            else
            {
                responseMessage.Message = "You are not autorized to do such actions!";
                return(StatusCode(403, responseMessage));
            }
        }
        public async Task <ActionResult> CreateTransaction(User user, ClaimsPrincipal currentUser, decimal amount, Transaction transaction, string reason)
        {
            if (currentUser.HasClaim(c => c.Type == "Roles"))
            {
                List <Transaction> transactions = new List <Transaction>();

                TransactionResponseModel sender   = new TransactionResponseModel();
                TransactionResponseModel reciever = new TransactionResponseModel();
                if (transaction.SenderAccountInfo.Contains("BG18VITB") && transaction.SenderAccountInfo.Length == 23)
                {
                    sender.IsIBAN         = true;
                    sender.SenderInfo     = transaction.SenderAccountInfo;
                    reciever.RecieverInfo = transaction.RecieverAccountInfo;

                    if (transaction.RecieverAccountInfo.Contains("BG18VITB") && transaction.RecieverAccountInfo.Length == 23)
                    {
                        reciever.IsIBAN       = true;
                        reciever.RecieverInfo = transaction.RecieverAccountInfo;
                    }
                }
                else if (transaction.RecieverAccountInfo.Contains("BG18VITB") && transaction.RecieverAccountInfo.Length == 23)
                {
                    reciever.IsIBAN       = true;
                    sender.SenderInfo     = transaction.SenderAccountInfo;
                    reciever.RecieverInfo = transaction.RecieverAccountInfo;
                }
                else
                {
                    _messageModel.Message = "Invalid arguments!";
                    return(StatusCode(400, _messageModel));
                }
                //bad request
                if (sender.IsIBAN && reciever.IsIBAN)
                {
                    transaction.Reason            = reason;
                    transaction.Date              = DateTime.Now;
                    transaction.TransactionAmount = amount;
                    _context.Add(transaction);
                    await _context.SaveChangesAsync();

                    transactions           = _context.Transactions.ToList();
                    user.LastTransactionId = transactions.Last().Id;
                    await _context.SaveChangesAsync();

                    _messageModel.Message = "Money send successfully!";
                    return(StatusCode(200, _messageModel));
                }
                else if (sender.IsIBAN && !reciever.IsIBAN)
                {
                    transaction.Reason            = reason;
                    transaction.Date              = DateTime.Now;
                    transaction.TransactionAmount = amount;
                    _context.Add(transaction);
                    await _context.SaveChangesAsync();

                    transactions           = _context.Transactions.ToList();
                    user.LastTransactionId = transactions.Last().Id;
                    await _context.SaveChangesAsync();

                    _messageModel.Message = "Purchase successfull!";
                    return(StatusCode(200, _messageModel));
                }
                else if (!sender.IsIBAN && reciever.IsIBAN)
                {
                    transaction.Reason            = reason;
                    transaction.Date              = DateTime.Now;
                    transaction.TransactionAmount = amount;
                    _context.Add(transaction);
                    await _context.SaveChangesAsync();

                    transactions           = _context.Transactions.ToList();
                    user.LastTransactionId = transactions.Last().Id;
                    await _context.SaveChangesAsync();

                    _messageModel.Message = "Money recieved successfully!";
                    return(StatusCode(200, _messageModel));
                }
            }

            _messageModel.Message = "You are not autorized to do such actions!";
            return(StatusCode(403, _messageModel));
        }