public async Task <IActionResult> Create()
        {
            var user = (TokenUser)HttpContext.Items["User"];

            var ticketCreateView = new TicketCreateViewParameters
            {
                ProductViewResult = await _productProxy.Get(user.Token),
            };

            return(View(ticketCreateView));
        }
        public async Task <IActionResult> Create(TicketCreateViewParameters parameters)
        {
            var user = (TokenUser)HttpContext.Items["User"];

            if (parameters.Attachments != null)
            {
                parameters.TicketCreateParameters.Files = new List <StorageCreateParameters>();
                foreach (var attachment in parameters.Attachments)
                {
                    var fileBytes = new byte[] { };
                    if (attachment != null)
                    {
                        await using (var ms = new MemoryStream())
                        {
                            await attachment.CopyToAsync(ms);

                            fileBytes = ms.ToArray();
                        }

                        var fileName = Path.GetFileName(attachment.FileName);
                        parameters.TicketCreateParameters.Files.Add(new StorageCreateParameters
                        {
                            Name      = Path.GetFileNameWithoutExtension(fileName),
                            Bytes     = fileBytes,
                            Extension = Path.GetExtension(fileName)
                        });
                    }
                }
            }

            var result = await _ticketProxy.Create(user.Token, new TicketCreateParameters
            {
                ClientId  = user.Id,
                ProductId = parameters.TicketCreateParameters.ProductId,
                Subject   = parameters.TicketCreateParameters.Subject,
                Summary   = parameters.TicketCreateParameters.Summary,
                Files     = parameters.TicketCreateParameters.Files,
            });

            var client = await _clientProxy.Get(user.Token, user.Id);

            if (result != null)
            {
                _emailSender.Send(new EmailSendParameter
                {
                    ToAddress = client.Email,
                    Subject   = $"Your ticket number {result.Id} is received",
                    Body      = $"Hello {client.Name}" + "," + $"{Environment.NewLine}"
                                + $"Your Ticket {result.Id} has been successfully submitted" + $"{Environment.NewLine}"
                                + "Find the details of your ticket below:" + $"{Environment.NewLine}"
                                + $"Ticket Number: {result.Id}" + $"{Environment.NewLine}"
                                + $"Date: {result.CreateDateTime}" + $"{Environment.NewLine}"
                                + $"Subject: {result.Subject}" + $"{Environment.NewLine}"
                                + $"Summary: {result.Summary}" + $"{Environment.NewLine}"
                                + "To track your tickets and chat with our support staff, all you need is to LOGIN TO YOUR ACCOUNT and navigate to (My Tickets)." + $"{Environment.NewLine}"
                });
                TempData["message"] = $"Ticket created successfully!." + $"{Environment.NewLine}" +
                                      $"Your ticket number is: {result.Id}";

                return(RedirectToAction("index"));
            }
            return(View()); // ALERT
        }