示例#1
0
        public ReadCuestionarioResponse DownloadCuestionario(ReadCuestionario request)
        {
            var response = new ReadCuestionarioResponse();

            response.Descarga = Single <Descarga> (q => q.Token == request.Token);

            if (response.Descarga.Id.IsNullOrEmpty())
            {
                throw new Exception("No existe informacion para el token:'{0}'".Fmt(request.Token));
            }

            if (response.Descarga.Estado != "grey")
            {
                throw new Exception("No disponible Cuestionario con el token:'{0}'. Estado:'{1}'"
                                    .Fmt(request.Token, response.Descarga.Estado));
            }

            response.Descarga.Estado = "red";
            Put(response.Descarga);

            response.Diagnostico = GetById <Diagnostico> (response.Descarga.IdDiagnostico);
            response.Plantilla   = GetById <Plantilla> (response.Diagnostico.IdPlantilla);
            response.Empresa     = GetById <Empresa> (response.Diagnostico.IdEmpresa);

            response.Capitulos = GetByQuery <Capitulo> (q => q.IdPlantilla == response.Diagnostico.IdPlantilla)
                                 .OrderBy(q => NormalizeNumeral(q.Numeral)).ToList();

            var capIds = response.Capitulos.ConvertAll(e => e.Id);

            var p = GetCollection <PreguntaDescarga>().Find(Query <Pregunta> .In((q) => q.IdCapitulo, capIds))
                    .OrderBy(q => NormalizeNumeral(q.Numeral)).ToList();
            var r = GetByQuery <Respuesta> (q => q.IdDiagnostico == response.Diagnostico.Id, q => q.IdPregunta);

            var g  = GetByQuery <Guia> (q => q.IdPlantilla == response.Plantilla.Id, q => q.Id);
            var rg = GetByQuery <RespuestaGuia> (q => q.IdDiagnostico == response.Diagnostico.Id, q => q.IdGuia);

            p.ForEach(q => response.Preguntas.Add(new ViewPregunta {
                Pregunta  = q,
                Respuesta = r.FirstOrDefault(rq => rq.IdPregunta == q.Id) ??
                            new Respuesta {
                    IdPregunta    = q.Id,
                    IdDiagnostico = response.Diagnostico.Id,
                    Respuestas    = new List <bool>(q.Preguntas.Count),
                    Valor         = (q.Preguntas.Count > 0 ? (short)0 : default(short?))
                }
            }));

            g.ForEach(q => response.Guias.Add(new ViewGuia {
                Guia      = q,
                Respuesta = rg.FirstOrDefault(rq => rq.IdGuia == q.Id) ??
                            new RespuestaGuia {
                    IdGuia = q.Id, IdDiagnostico = response.Diagnostico.Id
                }
            }));

            return(response);
        }
示例#2
0
 public object Get(ReadCuestionario request)
 {
     return(ServiceBase.CreateResponse(Store.DownloadCuestionario(request)));
 }