public IHttpActionResult Checkout(RentoRequest <Checkout> request) { Logger.Debug("Checkout", request); var response = new RentoResponse <int>(request); return(Ok(TryCatch(request, response, ValidateType.Active, async() => { var daysPeriod = (request.Data.To - request.Data.From).Days; if (!ValidateRequirdField(request.Data.CarId, request.Data.Price) || !ValidateRequirdField(request.Data.From, request.Data.To) || (daysPeriod < 1) || (request.Data.Flag == (int)CheckoutFlag.DeliverToMyLocation && (request.Data.Location == null || !ValidateRequirdField(request.Data.Location.Longitude, request.Data.Location.Latitude)))) { response.ErrorCode = ErrorCode.RequirdField; return; } var checkOutId = await CarManager.Checkout(UserSession.Id, request.Data); switch (checkOutId) { case -1: response.ErrorCode = ErrorCode.CustomerNonComplete; return; case 0: response.ErrorCode = ErrorCode.CarAlreadyReserved; return; default: await Database.MessageManager.Create(UserSession.Id, string.Format("{0} {1}", request.Language == (int)Language.Arabic ? "تم ارسال طلب استئجار سيارة من قبلكم بنجاح ورقم الحجر هو" : "Car rent order request done successfully with number", checkOutId )); break; } response.Data = checkOutId; }))); }