public async Task <IActionResult> EditOrder(Guid orderId, JerseyOrder order)
        {
            if (await UserIsInRole("admin"))
            {
                JerseyOrder entity = await _dbContext.JerseyOrders.FindAsync(orderId);

                if (entity == null)
                {
                    return(NotFound());
                }

                _dbContext.Entry(order).State = EntityState.Modified;

                try
                {
                    await _dbContext.SaveChangesAsync();
                }
                catch (DbUpdateException e)
                {
                    System.Diagnostics.Trace.TraceError("Order update exception: " + e.Message);
                    return(BadRequest("Something went wrong..."));
                }

                return(Ok(order));
            }
            return(Unauthorized());
        }
        public async Task <IActionResult> SubmitOrder(JerseyOrder order)
        {
            if (ModelState.IsValid)
            {
                if (order.PromoCode != null)
                {
                    order.PromoCode = order.PromoCode.ToUpperInvariant();
                }

                _dbContext.JerseyOrders.Add(order);

                try
                {
                    await _dbContext.SaveChangesAsync();
                }
                catch (DbUpdateException e)
                {
                    System.Diagnostics.Trace.TraceError("Order submit exception: " + e.Message);
                    return(BadRequest("Something went wrong..."));
                }

                try
                {
                    await _dbContext.Entry(order).Reference(o => o.Promo).LoadAsync();

                    decimal discount = baseDiscount;
                    if (order.Promo != null)
                    {
                        discount += order.Promo.Discount;
                    }

                    StringBuilder builder = new();
                    builder.Append($@"Здравейте {order.FirstName} {order.LastName},
                                <p>Успешно получихме вашата поръчка. Очаквайте обаждане на посоченият от вас телефонен номер за потвърждение!</p>
                                <p>Детайли за вашата поръчка:</p>");
                    foreach (JerseyDetails jersey in order.Jerseys)
                    {
                        builder.Append($"<p>{Util.JerseyCutNames[jersey.Cut]} тениска, размер {Util.JerseySizeNames[jersey.Size]}</p>");
                    }
                    decimal price = order.Jerseys.Count * baseJerseyPrice * (1 - discount);
                    if (price >= 100)
                    {
                        builder.Append($"Безплатна доставка за поръчка над 100лв.! ");
                    }
                    builder.Append($"Обща цена: {price}лв.");
                    builder.Append(@"<p>Поздрави от екипа на Bellum Gens!</p>
                                <a href='https://eb-league.com' target='_blank'>https://eb-league.com</a>");

                    await _sender.SendEmailAsync(order.Email, "Поръчката ви е получена", builder.ToString());
                }
                catch (Exception e)
                {
                    System.Diagnostics.Trace.TraceError("Order submit exception: " + e.Message);
                }
                return(Ok(order));
            }
            return(BadRequest("Order couldn't be validated..."));
        }
        public IHttpActionResult EditOrder(Guid orderId, JerseyOrder order)
        {
            if (UserIsInRole("admin"))
            {
                _dbContext.Entry(order).State = EntityState.Modified;

                try
                {
                    _dbContext.SaveChanges();
                }
                catch (DbUpdateException e)
                {
                    System.Diagnostics.Trace.TraceError("Order update exception: " + e.Message);
                    return(BadRequest("Something went wrong..."));
                }

                return(Ok(order));
            }
            return(Unauthorized());
        }