internal ReserveBikeResult Reserve(int idUser, int idBike) { UserManager usrManager = new UserManager(); ReserveBikeResult res = new ReserveBikeResult(); BikeDao dao = new BikeDao(); ReserveDao reDao = new ReserveDao(); Bike bike = dao.getBike(idBike); if (bike.idState != Constants.STATE_BIKE_FREE) { throw new Exception("Bicicleta no disponible para reserva"); } bool userOk = usrManager.isOkForReserve(idUser); if (userOk == false) { throw new Exception("Usuario no puede tomar la reserva"); } usrManager.userMakeReservation(idUser, idBike); dao.UpdateStatus(idBike, Constants.STATE_BIKE_RESERVED); Reserve reserve = new Reserve(); reserve.randomCode = Functions.CreateReserveCode(); reserve.idBike = idBike; reserve.idUser = idUser; reserve.idState = Constants.STATE_RESERVE_ACTIVE; reserve.stateTime = DateTime.Now; reserve.creationTime = DateTime.Now; reDao.Insert(reserve); res.resCod = 0; res.userStatus = new UserManager().getUserStatus(idUser); res.reserveCode = Functions.CreateReserveCode(); return res; }