private PaymentResultDto ConvertPaymentResultInDto(PaymentResult result)
        {
            var dto = new PaymentResultDto {
                PaymentId    = result.PaymentId,
                ClientId     = result.ClientId,
                SalesDate    = result.SalesDate.ToString("yyyy-MM-dd"),
                Quantity     = result.Quantity,
                ProductName  = result.ProductName,
                UnitPrice    = result.UnitPrice,
                ProductPrice = result.ProductPrice
            };

            return(dto);
        }
        public async Task <PaymentResultDto> GeneratePaymentAsync(GeneratePaymentDto generatePaymentDto)
        {
            PaymentResultDto paymentResultDto = new PaymentResultDto
            {
                FullDiscount = 0,
                FullPrice    = 0
            };

            generatePaymentDto.Order.OrderItems
            .ForEach(x => paymentResultDto.FullPrice += x.MenuItemPrice * x.NumberOfItems);

            int regularGuestDiscount = 0;

            if (generatePaymentDto.RegularGuest != null)
            {
                regularGuestDiscount = (int)(paymentResultDto.FullPrice * (generatePaymentDto.RegularGuest.Discount / 100.00));
            }

            int discountDiscount = 0;

            if (generatePaymentDto.Discount != null)
            {
                if (generatePaymentDto.Discount.Type == "Price")
                {
                    discountDiscount = generatePaymentDto.Discount.Value;
                }
                else
                {
                    discountDiscount = (int)(paymentResultDto.FullPrice * (generatePaymentDto.Discount.Value / 100.00));
                }

                bool success = await _repository
                               .SetDiscountUsedAsync(generatePaymentDto.Discount.ToEntity());
            }

            paymentResultDto.FullDiscount = regularGuestDiscount + discountDiscount;
            paymentResultDto.Result       = paymentResultDto.FullPrice - paymentResultDto.FullDiscount;
            if (paymentResultDto.Result < 0)
            {
                paymentResultDto.Result = 0;
            }

            return(paymentResultDto);
        }