Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        public async Task AddToRoleAsync([FromBody] User user, string role, [FromServices] WebStoreDb db)
        {
            await _UserStore.AddToRoleAsync(user, role);

            await db.SaveChangesAsync();
        }
Пример #4
0
        public async Task RemoveLoginAsync([FromBody] User user, string LoginProvider, string ProviderKey, [FromServices] WebStoreDb db)
        {
            await _UserStore.RemoveLoginAsync(user, LoginProvider, ProviderKey);

            await db.SaveChangesAsync();
        }
Пример #5
0
        public async Task AddLoginAsync([FromBody] AddLoginDTO login, [FromServices] WebStoreDb db)
        {
            await _UserStore.AddLoginAsync(login.User, login.UserLoginInfo);

            await db.SaveChangesAsync();
        }
Пример #6
0
        public async Task RemoveClaimsAsync([FromBody] RemoveClaimDTO ClaimInfo, [FromServices] WebStoreDb db)
        {
            await _UserStore.RemoveClaimsAsync(ClaimInfo.User, ClaimInfo.Claims);

            await db.SaveChangesAsync();
        }