public async Task <OrderDTO> CreateOrder(string UserName, CreateOrderModel OrderModel) { var user = await _UserManager.FindByNameAsync(UserName); if (user is null) { throw new InvalidOperationException($"Пользователь {UserName} не найден в БД"); } await using var transaction = await _db.Database.BeginTransactionAsync(); var order = new Order { Name = OrderModel.Order.Name, Address = OrderModel.Order.Address, Phone = OrderModel.Order.Phone, User = user, Date = DateTime.Now, Items = new List <OrderItem>() }; foreach (var item in OrderModel.Items) { var product = await _db.Products.FindAsync(item.Id); if (product is null) { throw new InvalidOperationException($"Товар id:{item.Id} не найден в БД"); } var order_item = new OrderItem { Order = order, Price = product.Price, Quantity = item.Quantity, Product = product }; order.Items.Add(order_item); } await _db.Orders.AddAsync(order); await _db.SaveChangesAsync(); await transaction.CommitAsync(); return(order.ToDTO()); }
public async Task <OrderDTO> CreateOrder(string UserName, CreateOrderModel OrderModel) { var user = await _UserManager.FindByNameAsync(UserName); if (user is null) { throw new InvalidOperationException($"User {UserName} is not found in DB"); } await using var transaction = await _db.Database.BeginTransactionAsync(); var order = new Order { Name = OrderModel.Order.Name, Address = OrderModel.Order.Address, Phone = OrderModel.Order.Phone, User = user, Date = DateTime.Now }; foreach (var(id, _, quantity) in OrderModel.Items) { var product = await _db.Products.FindAsync(id); if (product is null) { continue; } var orderItem = new OrderItem { Order = order, TotalPrice = product.Price, Quantity = quantity, Product = product }; order.Items.Add(orderItem); } await _db.Orders.AddAsync(order); await _db.SaveChangesAsync(); await transaction.CommitAsync(); return(order.ToDTO()); }
public async Task AddToRoleAsync([FromBody] User user, string role, [FromServices] WebStoreDb db) { await _UserStore.AddToRoleAsync(user, role); await db.SaveChangesAsync(); }
public async Task RemoveLoginAsync([FromBody] User user, string LoginProvider, string ProviderKey, [FromServices] WebStoreDb db) { await _UserStore.RemoveLoginAsync(user, LoginProvider, ProviderKey); await db.SaveChangesAsync(); }
public async Task AddLoginAsync([FromBody] AddLoginDTO login, [FromServices] WebStoreDb db) { await _UserStore.AddLoginAsync(login.User, login.UserLoginInfo); await db.SaveChangesAsync(); }
public async Task RemoveClaimsAsync([FromBody] RemoveClaimDTO ClaimInfo, [FromServices] WebStoreDb db) { await _UserStore.RemoveClaimsAsync(ClaimInfo.User, ClaimInfo.Claims); await db.SaveChangesAsync(); }