public NivelEN NivelItem(int id)
        {
            NivelEN result = null;

            try
            {
                SessionInitializeTransaction();


                String sql = @"select self.Nivel FROM ItemEN self " +
                             "where self.Id = :p_Id";
                IQuery query = session.CreateQuery(sql).SetParameter("p_Id", id);



                result = query.UniqueResult <NivelEN>();

                SessionCommit();
            }

            catch (Exception ex)
            {
                SessionRollBack();
                if (ex is ReciclaUAGenNHibernate.Exceptions.ModelException)
                {
                    throw ex;
                }
                throw new ReciclaUAGenNHibernate.Exceptions.DataLayerException("Error in ItemRESTCAD.", ex);
            }

            finally
            {
                SessionClose();
            }

            return(result);
        }
예제 #2
0
        public static NivelDTOA Convert(NivelEN en, NHibernate.ISession session = null)
        {
            NivelDTOA    dto          = null;
            NivelRESTCAD nivelRESTCAD = null;
            NivelCEN     nivelCEN     = null;
            NivelCP      nivelCP      = null;

            if (en != null)
            {
                dto          = new NivelDTOA();
                nivelRESTCAD = new NivelRESTCAD(session);
                nivelCEN     = new NivelCEN(nivelRESTCAD);
                nivelCP      = new NivelCP(session);



                //
                // Attributes

                dto.Id = en.Id;

                dto.Numero = en.Numero;


                dto.Puntuacion = en.Puntuacion;


                //
                // TravesalLink


                //
                // Service
            }

            return(dto);
        }
예제 #3
0
        public HttpResponseMessage BuscarPorId(int idNivel)
        {
            // CAD, CEN, EN, returnValue
            NivelRESTCAD nivelRESTCAD = null;
            NivelCEN     nivelCEN     = null;
            NivelEN      nivelEN      = null;
            NivelDTOA    returnValue  = null;

            try
            {
                SessionInitializeWithoutTransaction();


                nivelRESTCAD = new NivelRESTCAD(session);
                nivelCEN     = new NivelCEN(nivelRESTCAD);

                // Data
                nivelEN = nivelCEN.BuscarPorId(idNivel);

                // Convert return
                if (nivelEN != null)
                {
                    returnValue = NivelAssembler.Convert(nivelEN, session);
                }
            }

            catch (Exception e)
            {
                if (e.GetType() == typeof(HttpResponseException))
                {
                    throw e;
                }
                else if (e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.ModelException) && e.Message.Equals("El token es incorrecto"))
                {
                    throw new HttpResponseException(HttpStatusCode.Forbidden);
                }
                else if (e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.ModelException) || e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.DataLayerException))
                {
                    throw new HttpResponseException(HttpStatusCode.BadRequest);
                }
                else
                {
                    throw new HttpResponseException(HttpStatusCode.InternalServerError);
                }
            }
            finally
            {
                SessionClose();
            }

            // Return 404 - Not found
            if (returnValue == null)
            {
                return(this.Request.CreateResponse(HttpStatusCode.NotFound));
            }
            // Return 200 - OK
            else
            {
                return(this.Request.CreateResponse(HttpStatusCode.OK, returnValue));
            }
        }
예제 #4
0
        public HttpResponseMessage NivelItem(int idItem)
        {
            // CAD, EN
            ItemRESTCAD itemRESTCAD = null;
            ItemEN      itemEN      = null;

            // returnValue
            NivelEN   en          = null;
            NivelDTOA returnValue = null;

            try
            {
                SessionInitializeWithoutTransaction();


                itemRESTCAD = new ItemRESTCAD(session);

                // Exists Item
                itemEN = itemRESTCAD.ReadOIDDefault(idItem);
                if (itemEN == null)
                {
                    throw new HttpResponseException(this.Request.CreateResponse(HttpStatusCode.NotFound, "Item#" + idItem + " not found"));
                }

                // Rol
                // TODO: paginación


                en = itemRESTCAD.NivelItem(idItem);



                // Convert return
                if (en != null)
                {
                    returnValue = NivelAssembler.Convert(en, session);
                }
            }

            catch (Exception e)
            {
                if (e.GetType() == typeof(HttpResponseException))
                {
                    throw e;
                }
                else if (e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.ModelException) && e.Message.Equals("El token es incorrecto"))
                {
                    throw new HttpResponseException(HttpStatusCode.Forbidden);
                }
                else if (e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.ModelException) || e.GetType() == typeof(ReciclaUAGenNHibernate.Exceptions.DataLayerException))
                {
                    throw new HttpResponseException(HttpStatusCode.BadRequest);
                }
                else
                {
                    throw new HttpResponseException(HttpStatusCode.InternalServerError);
                }
            }
            finally
            {
                SessionClose();
            }

            // Return 204 - Empty
            if (returnValue == null)
            {
                return(this.Request.CreateResponse(HttpStatusCode.NoContent));
            }
            // Return 200 - OK
            else
            {
                return(this.Request.CreateResponse(HttpStatusCode.OK, returnValue));
            }
        }
예제 #5
0
 public void WhenBuscoUnNivelPorEseNivel()
 {
     nivel = nivelCEN.BuscarPorId(-1);
 }
예제 #6
0
 public void WhenBuscoElNivelPosSuId()
 {
     nivel = nivelCEN.BuscarPorId(nivelId);
 }
        public ReciclaUAGenNHibernate.EN.ReciclaUA.JuegoEN SiguienteItem(int p_oid, ReciclaUAGenNHibernate.Enumerated.ReciclaUA.TipoContenedorEnum p_tipocontenedor)
        {
            /*PROTECTED REGION ID(ReciclaUAGenNHibernate.CP.ReciclaUA_Juego_siguienteItem) ENABLED START*/

            IJuegoCAD juegoCAD = null;
            JuegoCEN  juegoCEN = null;
            JuegoEN   juegoEN  = null;

            INivelCAD nivelCAD = null;
            NivelCEN  nivelCEN = null;
            NivelEN   nivelEN  = null;


            try
            {
                SessionInitializeTransaction();

                juegoCAD = new JuegoCAD(session);
                juegoCEN = new JuegoCEN(juegoCAD);
                juegoEN  = juegoCAD.BuscarPorId(p_oid);

                nivelCAD = new NivelCAD(session);
                nivelCEN = new NivelCEN(nivelCAD);
                IList <NivelEN> niveles = new List <NivelEN>();

                ItemCAD Itemcad = new ItemCAD(session);


                niveles = nivelCAD.BuscarTodos(0, -1);
                nivelEN = niveles [juegoEN.NivelActual - 1];

                IList <ItemEN> itemsen = Itemcad.BuscarItemsPorNivel(nivelEN.Id);


                if (itemsen [juegoEN.ItemActual].Material.Contenedor == p_tipocontenedor)
                {
                    //Acierto
                    juegoEN.Aciertos++;
                    //Decimal penalizacion = 1 / juegoEN.IntentosItemActual;
                    Decimal penalizacion = Decimal.Divide(1, juegoEN.IntentosItemActual);

                    juegoEN.Puntuacion += Decimal.ToDouble(Decimal.Multiply(Convert.ToDecimal(nivelEN.Puntuacion), penalizacion));

                    juegoEN.IntentosItemActual = 1;


                    if (juegoEN.ItemActual + 1 < itemsen.Count)
                    {
                        juegoEN.ItemActual++;
                    }
                    else
                    {
                        juegoEN.ItemActual = 0;
                        niveles            = nivelCAD.BuscarTodos(0, -1);

                        if (juegoEN.NivelActual < niveles.Count)
                        {
                            juegoEN.NivelActual++;
                        }
                        else
                        {
                            juegoEN.Finalizado = true;
                        }
                    }
                }
                else
                {
                    //Fallo
                    juegoEN.Fallos++;
                    juegoEN.IntentosItemActual++;
                }

                juegoCAD.Modificar(juegoEN);



                SessionCommit();
            }
            catch (Exception ex)
            {
                SessionRollBack();
                throw ex;
            }
            finally
            {
                SessionClose();
            }
            return(juegoEN);


            /*PROTECTED REGION END*/
        }