예제 #1
0
        public async Task <IHttpActionResult> SubmitOrder(JerseyOrder order)
        {
            if (ModelState.IsValid)
            {
                if (order.PromoCode != null)
                {
                    order.PromoCode = order.PromoCode.ToUpperInvariant();
                }

                _dbContext.JerseyOrders.Add(order);

                try
                {
                    _dbContext.SaveChanges();
                }
                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().ConfigureAwait(false);

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

                    StringBuilder builder = new StringBuilder();
                    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>");
                    }
                    builder.Append($"Обща цена: {order.Jerseys.Count * baseJerseyPrice * (1 - discount) + 5}лв.");
                    builder.Append(@"<p>Поздрави от екипа на Bellum Gens!</p>
                                <a href='https://eb-league.com' target='_blank'>https://eb-league.com</a>");

                    await EmailServiceProvider.SendNotificationEmail(order.Email, "Поръчката ви е получена", builder.ToString()).ConfigureAwait(false);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Trace.TraceError("Order submit exception: " + e.Message);
                }
                return(Ok(order));
            }
            return(BadRequest("Order couldn't be validated..."));
        }
예제 #2
0
        public async Task <IHttpActionResult> Register(TournamentApplication application)
        {
            if (ModelState.IsValid)
            {
                Company         c    = _dbContext.Companies.Find(application.CompanyId);
                ApplicationUser user = GetAuthUser();
                if (application.Game == Game.StarCraft2)
                {
                    if (string.IsNullOrEmpty(application.BattleNetId))
                    {
                        return(BadRequest("Моля попълнете Battle.net battle tag!"));
                    }
                    if (_dbContext.TournamentApplications.Where(a => a.BattleNetId == application.BattleNetId && a.TournamentId == application.TournamentId).SingleOrDefault() != null)
                    {
                        return(BadRequest($"Вече има направена регистрация с battle tag {application.BattleNetId}!"));
                    }
                    if (user.BattleNetId == null || user.BattleNetId != application.BattleNetId)
                    {
                        _dbContext.Users.Find(user.Id).BattleNetId = application.BattleNetId;
                    }
                }
                else
                {
                    if (application.TeamId == Guid.Empty)
                    {
                        return(BadRequest("Моля попълнете отбор във формата за регистрация!"));
                    }
                    if (_dbContext.TournamentApplications.Where(a => a.TeamId == application.TeamId && a.TournamentId == application.TournamentId).SingleOrDefault() != null)
                    {
                        return(BadRequest("Вече има направена регистрация за този отбор!"));
                    }
                }
                if (c == null)
                {
                    _dbContext.Companies.Add(new Company()
                    {
                        Name = application.CompanyId
                    });
                }
                application.UniqueHash(_dbContext);
                application.UserId = user.Id;
                _dbContext.TournamentApplications.Add(application);

                try
                {
                    _dbContext.SaveChanges();
                }
                catch (DbUpdateException e)
                {
                    System.Diagnostics.Trace.TraceError("Tournament registration error: " + e.Message);
                    return(BadRequest("Нещо се обърка..."));
                }

                try
                {
                    string gameMsg = application.Game == Game.CSGO ? "Вашата регистрация е за участие в лигата по CS:GO" :
                                     $"Вашата регистрация е за участие в лигата по StarCraft II, с battle tag {application.BattleNetId}";
                    string message = $@"Здравей, { user.UserName },
                                    <p>Успешно получихме вашата регистрация за Esports Бизнес Лигата. В регистрацията сте посочили, че текущо работите в <b>{ application.CompanyId }</b>. {gameMsg}. Регистрация ще бъде потвърдена след като преведете таксата за участие (60лв. с ДДС за лигата по StarCraft II, или 300лв. с ДДС за лигата по CS:GO).</p>
                                    <p>Банковата ни сметка е</p>
                                    <ul>
                                        <li>Име на Банката: <b>{ AppInfo.Config.bank }</b></li>
                                        <li>Титуляр: <b>{ AppInfo.Config.bankAccountOwner }</b></li>
                                        <li>Сметка: <b>{ AppInfo.Config.bankAccount }</b></span></li>
                                        <li>BIC: <b>{ AppInfo.Config.bic }</b></li>
                                    </ul>
                                    <p>Моля при превода да сложите в основанието уникалния код, който сме генерирали за вашата регистрация: <b>{ application.Hash }</b>. Можете да намерите кода и през вашият профил на сайта ни.</p>
                                    <p>Ако ви е нужна фактура, моля да се свържете с нас на <a href='mailto:[email protected]'>[email protected]</a>!</p>
                                    <p>Заповядайте и в нашият <a href='https://discord.gg/bnTcpa9'>дискорд сървър</a>!</p>
                                    <p>Поздрави от екипа на Bellum Gens!</p>
                                    <a href='https://eb-league.com' target='_blank'>https://eb-league.com</a>";
                    await EmailServiceProvider.SendNotificationEmail(application.Email, "Регистрацията ви е получена", message).ConfigureAwait(false);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Trace.TraceError("Tournament registration error: " + e.Message);
                }
                return(Ok(application));
            }
            return(BadRequest("Не успяхме да вилидираме информацията..."));
        }