public async Task <IActionResult> Update([FromBody, CustomizeValidator] OrderToUpdate order, CancellationToken cancellationToken = default)
        {
            if (order is null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var result = await _orderService.UpdateAsync(order, cancellationToken);

                return(result.IsError ? throw new InvalidOperationException(result.Message) : (IActionResult)Ok(result.Data));
            }
            catch (InvalidOperationException ex)
            {
                Log.Error(ex, ex.Message);
                return(StatusCode(StatusCodes.Status500InternalServerError, new CustumResult()
                {
                    Status = StatusCodes.Status500InternalServerError, Message = ex.Message
                }));
            }
        }
        public async Task <Result <OrderView> > UpdateAsync(OrderToUpdate order, CancellationToken cancellationToken = default)
        {
            OrderDB orderForUpdate = await _context.Orders.Where(_ => _.Id == Guid.Parse(order.Id)).Select(_ => _).AsNoTracking().FirstOrDefaultAsync(cancellationToken);

            if (DateTime.Now < orderForUpdate.UpdateTime.Value.AddMinutes(NumberСonstants.TIME_TO_CHANGE_ORDER_IN_MINUTES))
            {
                orderForUpdate            = _mapper.Map <OrderDB>(order);
                orderForUpdate.UpdateTime = DateTime.Now;
                _context.Entry(orderForUpdate).Property(c => c.Address).IsModified     = true;
                _context.Entry(orderForUpdate).Property(c => c.PhoneNumber).IsModified = true;
                _context.Entry(orderForUpdate).Property(c => c.Name).IsModified        = true;
                _context.Entry(orderForUpdate).Property(c => c.Surname).IsModified     = true;
                _context.Entry(orderForUpdate).Property(c => c.UpdateTime).IsModified  = true;
                try
                {
                    await _context.SaveChangesAsync();

                    OrderDB orderAfterUpdate = await _context.Orders.Where(_ => _.Id == orderForUpdate.Id).Select(_ => _).AsNoTracking().FirstOrDefaultAsync(cancellationToken);

                    var dishList = await _context.BasketDishes.IgnoreQueryFilters().Where(_ => _.OrderId == orderAfterUpdate.Id).AsNoTracking().ToListAsync(cancellationToken);

                    OrderView view = CollectOrderView(orderAfterUpdate).Result.Data;
                    return(Result <OrderView> .Ok(view));
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    return(Result <OrderView> .Fail <OrderView>(ExceptionConstants.CANNOT_UPDATE_MODEL + ex.Message));
                }
                catch (DbUpdateException ex)
                {
                    return(Result <OrderView> .Fail <OrderView>(ExceptionConstants.CANNOT_UPDATE_MODEL + ex.Message));
                }
            }
            else
            {
                return(Result <OrderView> .Quite <OrderView>(NotificationConstans.TIME_IS_OVER));
            }
        }