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...")); }
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("Не успяхме да вилидираме информацията...")); }