public async Task <IRealizeOrderPropositionResponse> RealizeOrderProposition(IRealizeOrderPropositionRequest request)
        {
            try
            {
                IGetOrderPropositionByIdRequest getOrderPropositionByIdRequest =
                    new GetOrderPropositionByIdRequest(request.OrderPropositionId);
                IGetOrderPropositionResponse getOrderPropositionResponse = await _orderPropositionsProvider.GetOrderPropositionById(getOrderPropositionByIdRequest);

                if (getOrderPropositionResponse.Result == OrderPropositionsProvideResultEnum.Exception ||
                    getOrderPropositionResponse.Result == OrderPropositionsProvideResultEnum.Forbidden)
                {
                    return(new RealizeOrderPropositionResponse(RealizeOrderPropositionResult.Exception));
                }

                if (getOrderPropositionResponse.Result == OrderPropositionsProvideResultEnum.NotFound)
                {
                    return(new RealizeOrderPropositionResponse(RealizeOrderPropositionResult.NotFound));
                }

                OrderProposition orderProposition = getOrderPropositionResponse.OrderProposition;
                if (request.UserId != orderProposition.CreatorID)
                {
                    return(new RealizeOrderPropositionResponse(RealizeOrderPropositionResult.Forbidden));
                }

                ICreateOrderResponse createOrderResponse = await _orderCreator.CreateOrder(new CreateOrderRequest(request.OrderPropositionId));

                return(createOrderResponse.Result switch
                {
                    CreateOrderResult.Success => new RealizeOrderPropositionResponse(createOrderResponse.Order),
                    CreateOrderResult.Exception => new RealizeOrderPropositionResponse(RealizeOrderPropositionResult.Exception),
                    CreateOrderResult.CreatedNotFound => new RealizeOrderPropositionResponse(RealizeOrderPropositionResult.Exception),
                    _ => throw new ArgumentOutOfRangeException()
                });
            }
Esempio n. 2
0
 public OrderPropositionApiModel ConvertOrderProposition(OrderProposition orderProposition)
 {
     if (orderProposition == null)
     {
         return(null);
     }
     return(new OrderPropositionApiModel
     {
         Id = orderProposition.Id,
         CreationDate = orderProposition.CreationDate,
         CreatorID = orderProposition.CreatorID,
         RestaurantId = orderProposition.RestaurantId,
         TimeToOrdering = orderProposition.TimeToOrdering,
         OrderingStopped = orderProposition.OrderingStopped
     });
 }
        public async Task <IGetOrderPropositionResponse> GetOrderPropositionById(IGetOrderPropositionByIdRequest request)
        {
            try
            {
                OrderProposition orderProposition = await _orderPropositionRepository.GetOrderPropositionById(request.OrderPropositionId);

                if (orderProposition == null)
                {
                    return(new GetOrderPropositionResponse(OrderPropositionsProvideResultEnum.NotFound));
                }
                return(new GetOrderPropositionResponse(orderProposition));
            }
            catch (Exception exception)
            {
                _logger.Log(exception);
                return(new GetOrderPropositionResponse(OrderPropositionsProvideResultEnum.Exception));
            }
        }
        public async Task <OrderPropositionWithResultCode> CreateOrderProposition(DateTime timeToOrdering, Guid userId, Guid restaurantId)
        {
            DataSet dataSet = await _storedProceduresExecutor.ExecuteQuery(StoredProceduresNames.CreateOrderProposition,
                                                                           new List <SqlParameter>(3)
            {
                new SqlParameter("@userId", userId),
                new SqlParameter("@timeToOrdering", timeToOrdering),
                new SqlParameter("@restaurantId", restaurantId)
            });

            int resultCode = (int)dataSet.Tables[0].Rows[0][0];
            OrderPropositionCreateSqlResult result = (OrderPropositionCreateSqlResult)resultCode;

            OrderProposition orderProposition = null;

            if (result == OrderPropositionCreateSqlResult.Success)
            {
                orderProposition = _dataRowToObjectMapper.ConvertOrderProposition(dataSet.Tables[1].Rows[0]);
            }
            return(new OrderPropositionWithResultCode(orderProposition, result));
        }
Esempio n. 5
0
 public OrderPropositionCreationResponse(OrderProposition orderProposition)
 {
     OrderProposition = orderProposition;
     Result           = OrderPropositionCreationResultEnum.Success;
 }
 public OrderPropositionWithResultCode(OrderProposition orderProposition, OrderPropositionCreateSqlResult resultCode)
 {
     OrderProposition = orderProposition;
     ResultCode       = resultCode;
 }
Esempio n. 7
0
 public GetOrderPropositionResponse(OrderProposition orderProposition)
 {
     OrderProposition = orderProposition;
     Result           = OrderPropositionsProvideResultEnum.Success;
 }