public async Task <IHttpActionResult> EnviarQR(LlaveQR llave)
        {
            try
            {
                var mng = new LlaveQRManager();

                LlaveQR c = null;
                c = mng.RetrieveById(llave);

                if (c != null)
                {
                    await EnviarCorreoManager.GetInstance().ExecuteCorreoCodigoQR(llave.IdUsuario, llave);

                    apiResp         = new ApiResponse();
                    apiResp.Message = "Llave enviada, Por favor verifique el correo electrónico";
                }
                else
                {
                    throw new BussinessException(52);
                }
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }

            return(Ok(apiResp));
        }
        public IHttpActionResult GetAllByReserva(string id)
        {
            try
            {
                apiResp = new ApiResponse();
                var mng = new LlaveQRManager();

                var num = 0;
                var idR = 0;
                if (Int32.TryParse(id, out num))
                {
                    idR = num;
                }
                else
                {
                    throw new BussinessException(22);
                }

                var QR = new LlaveQR
                {
                    IdReserva = idR
                };

                apiResp.Data = mng.RetrieveAllByReserva(QR);
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
            return(Ok(apiResp));
        }
 public IHttpActionResult GetAll()
 {
     try
     {
         apiResp = new ApiResponse();
         var mng = new LlaveQRManager();
         apiResp.Data = mng.RetrieveAll();
     }
     catch (BussinessException bex)
     {
         return(InternalServerError(new Exception(bex.AppMessage.Message)));
     }
     return(Ok(apiResp));
 }
        public async Task <IHttpActionResult> PostAsync(LlaveQR llave)
        {
            try
            {
                var mng = new LlaveQRManager();

                await mng.Create(llave);

                apiResp         = new ApiResponse();
                apiResp.Message = "Llave generada correctamente";
                return(Ok(apiResp));
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
        }
        public IHttpActionResult Delete(LlaveQR llave)
        {
            try
            {
                var mng = new LlaveQRManager();

                mng.Delete(llave);

                apiResp         = new ApiResponse();
                apiResp.Message = "Llave Eliminada correctamente";
                return(Ok(apiResp));
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
        }
        public IHttpActionResult CheckOut(Reserva reserva)
        {
            try
            {
                var mng = new LlaveQRManager();

                apiResp = new ApiResponse
                {
                    Message = mng.CheckOut(reserva)
                };

                return(Ok(apiResp));
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
        }
        public async Task <IHttpActionResult> PostYEnviarCorreo(LlaveQR llave)
        {
            try
            {
                var mng     = new LlaveQRManager();
                var usuario = new Usuario
                {
                    Correo = llave.IdUsuario
                };
                await mng.CreateYEnviar(llave, usuario);

                apiResp         = new ApiResponse();
                apiResp.Message = "Llave generada correctamente";
                return(Ok(apiResp));
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
        }
        public IHttpActionResult Get(string id)
        {
            try
            {
                var mng = new LlaveQRManager();

                var QR = new LlaveQR
                {
                    CodigoQR = id
                };

                QR           = mng.RetrieveById(QR);
                apiResp      = new ApiResponse();
                apiResp.Data = QR;
                return(Ok(apiResp));
            }
            catch (BussinessException bex)
            {
                return(InternalServerError(new Exception(bex.AppMessage.Message)));
            }
        }