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); }
public object Get(ReadCuestionario request) { return(ServiceBase.CreateResponse(Store.DownloadCuestionario(request))); }