Esempio n. 1
0
        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;
        }