Пример #1
0
 public bool CreateTicket(CustomerTicket ticket, CustomerPayment payment, Customer customer)
 {
     try
     {
         Dictionary <String, Object> extraParamenter = new Dictionary <string, object>();
         extraParamenter.Add("ticket", JsonConvert.SerializeObject(ticket));
         extraParamenter.Add("payment", JsonConvert.SerializeObject(payment));
         Infra.Queue.AzureQueueMessageManager.Enqueue(customer.Id.ToString(), customer.Name, null, Infra.Queue.AzureMessageType.NEW_TRANSACTION, extraParamenter);
         return(true);
     }
     catch (System.Exception ex)
     {
         throw ex;
     }
 }
 public bool CreateQuickTicket(CustomerTicket ticket, CustomerPayment payment, Customer customer)
 {
     try
     {
         Dictionary<String, Object> extraParamenter = new Dictionary<string, object>();
         extraParamenter.Add("ticket", JsonConvert.SerializeObject(ticket));
         extraParamenter.Add("payment", JsonConvert.SerializeObject(payment));
         Infra.Queue.AzureQueueMessageManager.Enqueue(customer.Id.ToString(), customer.Name, null, Infra.Queue.AzureMessageType.NEW_TRANSACTION_INSTANT_BUY, extraParamenter);
         return true;
     }
     catch (System.Exception ex)
     {
         throw ex;
     }
 }
Пример #3
0
        public ActionResult Create(CustomerTicket cTicket)
        {
            if (ModelState.IsValid)
            {
                Customer customer = unitOfWork.CustomerRepository.GetSingleRecord(Int32.Parse(cTicket.Customer));

                DailyTicketCount dailyCount = unitOfWork.DailyTicketCountRepository.LatestRecord();

                if (cTicket.Ticket.ActionWith.Equals("Relayware", StringComparison.Ordinal))
                {
                    customer.NumOpenTicketsRelayware     += 1;
                    dailyCount.TotalOpenTicketsRelayware += 1;
                }
                else if (cTicket.Ticket.ActionWith.Equals("Customer", StringComparison.Ordinal))
                {
                    customer.NumOpenTicketsCust     += 1;
                    dailyCount.TotalOpenTicketsCust += 1;
                }

                if (cTicket.Ticket.Status.Equals("Open", StringComparison.Ordinal))
                {
                    customer.NumOpenTickets      += 1;
                    dailyCount.TotalOpenedTicket += 1;
                }
                else if (cTicket.Ticket.Status.Equals("Closed", StringComparison.Ordinal))
                {
                    customer.NumClosedTickets     += 1;
                    dailyCount.TotalClosedTickets += 1;
                }

                unitOfWork.CustomerRepository.UpdateRecord(customer);

                cTicket.Ticket.Customer = customer;

                unitOfWork.TicketRepository.AddRecord(cTicket.Ticket);

                unitOfWork.DailyTicketCountRepository.UpdateRecord(dailyCount);

                unitOfWork.SaveChanges();

                return(RedirectToAction("Index", "DailyTicketCounts", null));
            }

            return(View());
        }
Пример #4
0
 public HttpResponseMessage CreateDalalTicket(CustomerTicket ticket)
 {
     try
     {
         var result = Manager.CreateDalalTicket(ticket, ticket.who);
         return(OkResponse <CustomerTicket>(result));
     }
     catch (Exception ex)
     {
         if (ex.Message.StartsWith("contact With Id"))
         {
             string message = string.IsNullOrEmpty(ex.Message) ? "Contact Not Found" : ex.Message;
             return(NotFoundResponse("Contact Not Found", message));
         }
         else
         {
             return(NotFoundResponse("Error in create dalal ticket", ex.Message));
         }
     }
 }
        private void ProcessQuickTransaction(AzureMessage azureMessage)
        {
            var jsonTicket  = (string)azureMessage.ExtraData["ticket"];
            var jsonPayment = (string)azureMessage.ExtraData["payment"];

            CustomerTicket  ticket   = JsonConvert.DeserializeObject <CustomerTicket>(jsonTicket);
            CustomerPayment payment  = JsonConvert.DeserializeObject <CustomerPayment>(jsonPayment);
            Customer        customer = this.customerService.GetCustomerById(new Guid(azureMessage.SenderUserId));

            ticket.IdEvent    = ticket.Event.Id;
            ticket.IdCustomer = customer.Id;

            if (MundiPaggProxy.ProcessPayment(ticket, payment.InstantBuy, payment.SecurityCode))
            {
                var ticketUpdate = this.customerTicketService.GetTicketById(ticket.Id);
                ticketUpdate.Status = ticket.Status;

                this.customerTicketService.Update(ticketUpdate);
                this.SendEmail(ticket, customer);
            }
        }
Пример #6
0
        public object PostTicket(TicketModel loginModel)
        {
            CustomerTicket customerticket = new CustomerTicket
            {
                CustomerId  = Convert.ToInt32(loginModel.id),
                Content     = loginModel.content,
                CreatedDate = DateTime.Now,
                Title       = "Title"
            };

            db.CustomerTicket.Add(customerticket);
            db.SaveChanges();
            //if (LoginManager.Login(loginModel.username, loginModel.password, out errorMessage))
            //{
            //    return new { Result = true, User = LoginManager.CurrentUser.Transform() };
            //}
            //else
            //{
            return(new { model = customerticket });
            // }
        }
        private void ProcessTransaction(AzureMessage azureMessage)
        {
            var jsonPayment = (string)azureMessage.ExtraData["payment"];
            var jsonTicket  = (string)azureMessage.ExtraData["ticket"];

            CustomerPayment payment  = JsonConvert.DeserializeObject <CustomerPayment>(jsonPayment);
            CustomerTicket  ticket   = JsonConvert.DeserializeObject <CustomerTicket>(jsonTicket);
            Customer        customer = this.customerService.GetCustomerById(new Guid(azureMessage.SenderUserId));

            ticket.IdEvent    = ticket.Event.Id;
            ticket.IdCustomer = customer.Id;

            Guid instantBuy;

            if (MundiPaggProxy.ProcessPayment(ticket, payment, out instantBuy))
            {
                var ticketUpdate = this.customerTicketService.GetTicketById(ticket.Id);
                ticketUpdate.Status = ticket.Status;

                this.customerTicketService.Update(ticketUpdate);
                this.SendEmail(ticket, customer);

                if (payment.KeepSave)
                {
                    if (!customer.PaymentTokenizer.Any(x => x.Token == instantBuy.ToString()))
                    {
                        var customerToken = new CustomerPaymentTokenizer()
                        {
                            Id           = Guid.NewGuid(),
                            IdCustomer   = customer.Id,
                            SecurityCode = payment.SecurityCode,
                            Token        = instantBuy.ToString()
                        };

                        customer.PaymentTokenizer.Add(customerToken);
                        this.customerService.Update(customer);
                    }
                }
            }
        }
Пример #8
0
        public ApiResult <CustomerTicket> SaveQuick(string customerId, CustomerTicket ticket, CustomerPayment payment, Event eventTicket)
        {
            try
            {
                var customer = this.customerService.GetCustomerById(Guid.Parse(customerId));
                ticket.Event = eventTicket;
                var result = this.customerService.CreateQuickTicket(ticket, payment, customer);

                return(new ApiResult <CustomerTicket>()
                {
                    Result = result,
                    Data = ticket,
                });
            }
            catch (System.Exception ex)
            {
                return(new ApiResult <CustomerTicket>()
                {
                    Result = false,
                    Data = null,
                    ErrorMessage = ex.Message
                });
            }
        }
Пример #9
0
        public bool CreateQuickTicket(CustomerTicket ticket, CustomerPayment payment, Customer customer)
        {
            try
            {
                Log.Info($"Criando o ticket do cliente com o id {customer.Id}");

                ticket.Status = Enum.StatusEnum.Pending;
                ticket.Id = Guid.NewGuid();

                var result = this.customerTicketService.CreateQuickTicket(ticket, payment, customer);

                if (result)
                {
                    customer.Tickets.Add(ticket);
                    this.customerRepository.Update(customer);
                }

                return result;
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                throw;
            }
            finally
            {
                Log.Info($"Finalizando a criação do ticket do evento para o cliente {customer.Id}");
            }

        }
Пример #10
0
        internal static bool ProcessPayment(CustomerTicket ticket, CustomerPayment payment, out Guid instantBuy)
        {
            var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price);
            var expiration        = payment.Expiration.Split('/');
            var expMonth          = Convert.ToInt32(expiration.FirstOrDefault());
            var expYear           = Convert.ToInt32(expiration.LastOrDefault());

            instantBuy = Guid.Empty;

            try
            {
                Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                // Cria a transação.
                var transaction = new CreditCardTransaction()
                {
                    AmountInCents = amountTransaction,
                    CreditCard    = new CreditCard()
                    {
                        CreditCardBrand  = ConvertCreditCardBrand(payment),
                        CreditCardNumber = payment.CreditCardNumber,
                        ExpMonth         = expMonth,
                        ExpYear          = expYear,
                        HolderName       = payment.HolderName,
                        SecurityCode     = payment.SecurityCode
                    },
                };

                // Cria requisição.
                var createSaleRequest = new CreateSaleRequest()
                {
                    // Adiciona a transação na requisição.
                    CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }),
                };

                Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                var serviceClient = new GatewayServiceClient(merchantKey, hostUri);

                // Autoriza a transação e recebe a resposta do gateway.
                var httpResponse = serviceClient.Sale.Create(createSaleRequest);

                Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}");
                if (httpResponse.Response.CreditCardTransactionResultCollection != null)
                {
                    var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus;
                    Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}");

                    if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized)
                    {
                        ticket.Status = Enum.StatusEnum.NotAuthorized;
                    }

                    if (transactionStatus == CreditCardTransactionStatusEnum.Captured)
                    {
                        ticket.Status = Enum.StatusEnum.Authorized;
                    }

                    if (payment.KeepSave)
                    {
                        instantBuy = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCard.InstantBuyKey;
                    }

                    return(true);
                }

                return(false);
            }
            catch (System.Exception ex)
            {
                Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex);
                throw ex;
            }
            finally
            {
                Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");
            }
        }
Пример #11
0
        internal static bool ProcessPayment(CustomerTicket ticket, Guid instantBuy, string securityCode)
        {
            var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price);

            try
            {
                Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                // Cria a transação.
                var transaction = new CreditCardTransaction()
                {
                    AmountInCents = amountTransaction,
                    CreditCard = new CreditCard()
                    {
                        InstantBuyKey = instantBuy,
                        SecurityCode = securityCode
                    },
                };

                // Cria requisição.
                var createSaleRequest = new CreateSaleRequest()
                {
                    // Adiciona a transação na requisição.
                    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),
                };

                Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                var serviceClient = new GatewayServiceClient(merchantKey, hostUri);

                // Autoriza a transação e recebe a resposta do gateway.
                var httpResponse = serviceClient.Sale.Create(createSaleRequest);

                Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}");
                if (httpResponse.Response.CreditCardTransactionResultCollection != null)
                {
                    var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus;
                    Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}");

                    if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized)
                        ticket.Status = Enum.StatusEnum.NotAuthorized;

                    if (transactionStatus == CreditCardTransactionStatusEnum.Captured)
                        ticket.Status = Enum.StatusEnum.Authorized;
                    
                    return true;
                }

                return false;
            }
            catch (System.Exception ex)
            {
                Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex);
                throw ex;
            }
            finally
            {
                Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");
            }

        }
Пример #12
0
        internal static bool ProcessPayment(CustomerTicket ticket, CustomerPayment payment, out Guid instantBuy)
        {
            var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price);
            var expiration = payment.Expiration.Split('/');
            var expMonth = Convert.ToInt32(expiration.FirstOrDefault());
            var expYear = Convert.ToInt32(expiration.LastOrDefault());

            instantBuy = Guid.Empty;

            try
            {
                Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                // Cria a transação.
                var transaction = new CreditCardTransaction()
                {
                    AmountInCents = amountTransaction,
                    CreditCard = new CreditCard()
                    {
                        CreditCardBrand = ConvertCreditCardBrand(payment),
                        CreditCardNumber = payment.CreditCardNumber,
                        ExpMonth = expMonth,
                        ExpYear = expYear,
                        HolderName = payment.HolderName,
                        SecurityCode = payment.SecurityCode
                    },
                };

                // Cria requisição.
                var createSaleRequest = new CreateSaleRequest()
                {
                    // Adiciona a transação na requisição.
                    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),
                };

                Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                var serviceClient = new GatewayServiceClient(merchantKey, hostUri);

                // Autoriza a transação e recebe a resposta do gateway.
                var httpResponse = serviceClient.Sale.Create(createSaleRequest);

                Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}");
                if (httpResponse.Response.CreditCardTransactionResultCollection != null)
                {
                    var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus;
                    Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}");

                    if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized)
                        ticket.Status = Enum.StatusEnum.NotAuthorized;

                    if (transactionStatus == CreditCardTransactionStatusEnum.Captured)
                        ticket.Status = Enum.StatusEnum.Authorized;

                    if (payment.KeepSave)
                        instantBuy = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCard.InstantBuyKey;
                    
                    return true;

                }

                return false;
            }
            catch (System.Exception ex)
            {
                Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex);
                throw ex;
            }
            finally
            {
                Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");
            }

        }
Пример #13
0
        public ActionResult Book(int id, int type)
        {
            Ticket ticket = db.Tickets.Find(id);

            customer custobj = db.customers.Find(Convert.ToInt32(Session["UserID"]));

            CustomerTicket custticket = new CustomerTicket();

            custticket.CustomerID  = custobj.ID;
            custticket.TicketID    = ticket.L_ID;
            custticket.CreatedDate = DateTime.Today;
            db.CustomerTickets.Add(custticket);
            db.SaveChanges();
            if (custobj != null)
            {
                EMail omail = new EMail();
                try
                {
                    string sub         = "";
                    string Fare        = "";
                    string UN          = "";
                    string Start       = "";
                    string Destination = "";
                    string LN          = "";
                    string DT          = "";
                    string Time        = "";

                    if (type == 1)
                    {
                        sub   = "Deck Fare";
                        Fare += ticket.Fare_Deck;

                        UN          += custobj.user_name;
                        Start       += ticket.Start;
                        Destination += ticket.Destination;
                        DT          += ticket.Dept_Time;
                        LN          += ticket.L_Name;
                    }
                    if (type == 3)
                    {
                        sub   = "Cabin Fare";
                        Fare += ticket.Fare_Cabin;


                        UN          += custobj.user_name;
                        Start       += ticket.Start;
                        Destination += ticket.Destination;
                        DT          += ticket.Dept_Time;
                        LN          += ticket.L_Name;
                    }
                    if (type == 2)
                    {
                        sub   = "First Class Fare";
                        Fare += ticket.Fare_1st_Class;

                        UN          += custobj.user_name;
                        Start       += ticket.Start;
                        Destination += ticket.Destination;
                        DT          += ticket.Dept_Time;
                        LN          += ticket.L_Name;
                    }

                    omail.SendMail("Email", custobj.email, new string[] { sub, UN, Start, Destination, DT, LN, Fare });
                }
                catch (Exception)
                {
                    throw;
                }
                return(View(ticket));
            }

            if (Session["UserID"] != null)
            {
                ViewBag.User     = "******";
                ViewBag.UserName = Session["UserName"];
            }


            return(View(ticket));
        }
 public void Update(CustomerTicket ticket)
 {
     this.customerTicketRepository.Update(ticket);
 }
Пример #15
0
        internal static bool ProcessPayment(CustomerTicket ticket, Guid instantBuy, string securityCode)
        {
            var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price);

            try
            {
                Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                // Cria a transação.
                var transaction = new CreditCardTransaction()
                {
                    AmountInCents = amountTransaction,
                    CreditCard    = new CreditCard()
                    {
                        InstantBuyKey = instantBuy,
                        SecurityCode  = securityCode
                    },
                };

                // Cria requisição.
                var createSaleRequest = new CreateSaleRequest()
                {
                    // Adiciona a transação na requisição.
                    CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }),
                };

                Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");

                var serviceClient = new GatewayServiceClient(merchantKey, hostUri);

                // Autoriza a transação e recebe a resposta do gateway.
                var httpResponse = serviceClient.Sale.Create(createSaleRequest);

                Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}");
                if (httpResponse.Response.CreditCardTransactionResultCollection != null)
                {
                    var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus;
                    Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}");

                    if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized)
                    {
                        ticket.Status = Enum.StatusEnum.NotAuthorized;
                    }

                    if (transactionStatus == CreditCardTransactionStatusEnum.Captured)
                    {
                        ticket.Status = Enum.StatusEnum.Authorized;
                    }

                    return(true);
                }

                return(false);
            }
            catch (System.Exception ex)
            {
                Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex);
                throw ex;
            }
            finally
            {
                Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}");
            }
        }
Пример #16
0
        public HttpResponseMessage CreateIndividualTicket(CustomerTicket ticket, Who who = Who.Web)
        {
            var result = Manager.CreateIndividualTicket(ticket, who);

            return(OkResponse <CustomerTicket>(result));
        }
Пример #17
0
 public void Update(CustomerTicket ticket)
 {
     this.customerTicketRepository.Update(ticket);
 }
        private void SendEmail(CustomerTicket ticket, Customer customer)
        {
            var model = new
            {
                Name = customer.Name,
                EventName = ticket.Event.Name,
                Status = ticket.Status.ToString(),
            };
            Stream stream = GetStreamEmail(this.NewTransactionUpdate);
            string emailBody = Infra.Utils.EmailUtils.TransformTemplate(stream, model);

            Infra.Utils.EmailUtils.SendEmail(customer.Email, emailBody, Infra.Utils.EmailUtils.EmaiSubject.NEW_TRANSACTION_UPDATE);
        }