protected Reuniao CarregaReuniao(int id_reuniao)
        {
            //Cria o wrapper
            spsWrapper2 objWrapper = new spsWrapper2();

            //carrega a REunião
            var objSaida = (from SPListItem item in
                            objWrapper.RetornaLista("Reunioes", new string[] { "Hora de Início", "Title" }, SPContext.Current.Web.ID)
                            where item.ID == id_reuniao
                            select new Reuniao {
                dt_reuniao = Convert.ToDateTime(item["Hora de Início"]), ID_Reuniao = item.ID, Titulo = item.Title
            }
                            ).FirstOrDefault();


            //Adiciona os Participantes.

            //Participantes..
            objSaida.Participantes.AddRange(Participante.Participantes(objSaida.ID_Reuniao));



            DateTime dtInicioFiltro = objSaida.dt_reuniao.Date.AddDays(-7);

            ////Carrega as pautas que tiveram tarefas alteradas
            List <Pauta> objPautas = Pauta.Pautas(dtInicioFiltro, objSaida.dt_reuniao);


            //Pauta.Pautas().Where(f => f.dt_modificado >= dtInicioFiltro && f.dt_modificado <= objSaida.dt_reuniao).ToList();


            objSaida.Pautas.AddRange(objPautas.OrderBy(f => f.Titulo));
            return(objSaida);
        }
 protected void AtualizaCache()
 {
     // ViewState["Pautas"] = CarregaPautas();
     lock (_lock)
     {
         SPContext.Current.Site.Cache["Pautas"] = Pauta.Pautas();
     }
 }
        public void LimpaCachePautas(HttpContext context)
        {
            string strSaida = "{'Resposta': {" +
                              "  'Codigo': '{0}', " +
                              "  'Descricao': '{1}' " +
                              "}} ";


            try
            {
                SPContext.Current.Site.Cache["Pautas"] = Pauta.Pautas();
                context.Response.Write(strSaida.Replace("{0}", "0").Replace("{1}", "Sucesso"));
            }
            catch (Exception ex)
            {
                context.Response.Write(strSaida.Replace("{0}", "-1").Replace("{1}", ex.Message));
            }
        }
        //Gerar a ata
        protected void btnGerar_Click(object sender, EventArgs e)
        {
            if (this.cboDataReuniao.SelectedItem == null)
            {
                this.lblErro.Text    = "Erro, você deve selecionar uma reunião para gerar a ATA";
                this.pnlErro.Visible = true;
                return;
            }

            int idReuniao = Convert.ToInt32(this.cboDataReuniao.SelectedItem.Value);


            //Carrega a reunião
            Reuniao objReuniao = CarregaReuniao(idReuniao);

            //Verifica se a reunião existe
            if (objReuniao == null)
            {
                lblErro.Text         = "Reunião Não encontrada!";
                this.pnlErro.Visible = true;
                return;
            }

            try
            {
                //Instancia o relatório
                reports.rptGeradorAta2 objRelatorio = new reports.rptGeradorAta2();


                //Instancia o dataset
                DataSet objDs = objRelatorio.dsAta1;



                //Adiciona a reunião
                objDs.Tables["Reuniao"].Rows.Add(objReuniao.ID_Reuniao,
                                                 objReuniao.dt_reuniao > new DateTime(2000, 1, 1) ? (DateTime?)objReuniao.dt_reuniao : null,
                                                 //objReuniao.dt_reuniao,
                                                 objReuniao.Titulo);


                //Adiciona os PArticipantes
                foreach (Participante p in objReuniao.Participantes)
                {
                    objDs.Tables["Participantes"].Rows.Add(p.ID_Reuniao, p.Nome, "mailto:" + p.Email);
                }


                //Pautas originais (status originais)
                List <Pauta> objPautasOriginais = Pauta.Pautas();

                //Adiciona as Pautas
                foreach (Pauta pauta in objReuniao.Pautas)
                {
                    //Adiciona a pauta
                    objDs.Tables["Pauta"].Rows.Add(idReuniao, pauta.ID, pauta.Titulo, objPautasOriginais.Find(p => p.ID == pauta.ID).Status);



                    foreach (Tarefa tarefa in pauta.Tarefas)
                    {
                        //Id-tarefa, idpauta, titulo, atribuidoa, status, data prevista
                        //Adiciona as tarefas da pauta.
                        objDs.Tables["Tarefa"].Rows.Add(tarefa.ID,
                                                        tarefa.ID_Pauta,
                                                        tarefa.Titulo,
                                                        tarefa.Atribuidaa,
                                                        objPautasOriginais.Find(p => p.ID == pauta.ID).Tarefas.Find(t => t.ID == tarefa.ID).Status,
                                                        ((tarefa.DataPrevista.HasValue && tarefa.DataPrevista.Value > new DateTime(2000, 01, 01)) ? tarefa.DataPrevista : null),
                                                        tarefa.Descricao,
                                                        ((tarefa.DataConclusao.HasValue && tarefa.DataConclusao.Value > new DateTime(2000, 01, 01)) ? tarefa.DataConclusao : null));

                        foreach (ItemTarefa itemTarefa in tarefa.Itens)
                        {
                            objDs.Tables["ItemTarefa"].Rows.Add(
                                itemTarefa.ID,
                                itemTarefa.ID_TAREFA,
                                //itemTarefa.dt_reuniao,
                                ((itemTarefa.dt_reuniao.HasValue && itemTarefa.dt_reuniao.Value > new DateTime(2000, 01, 01)) ?  itemTarefa.dt_reuniao : null),

                                objPautasOriginais.Find(p => p.ID == pauta.ID).Tarefas.Find(t => t.ID == tarefa.ID).Itens.Find(i => i.ID == itemTarefa.ID).Status,
                                //itemTarefa.Status,
                                itemTarefa.LoginResponsavel.Replace("EMBRATEL\\", "").Replace("DESENV2010\\", "") + "@",
                                itemTarefa.Detalhes,
                                itemTarefa.Titulo,
                                itemTarefa.Prazo.HasValue && itemTarefa.Prazo.Value > new DateTime(2000, 1, 1) ? itemTarefa.Prazo : null
                                //itemTarefa.Prazo

                                );
                        }
                    }
                }

                //Verifica se há pauta em andamento caso não adiciona uma pauta em branco
                // objDs.Tables["Pauta"].Rows.Add(idReuniao, pauta.ID, pauta.Titulo, objPautasOriginais.Find(p => p.ID == pauta.ID).Status);

                objDs.Tables["Pauta"].DefaultView.Sort = "Status desc";

                if (!(objDs.Tables["Pauta"].DefaultView.Find("Concluído") >= 0))
                {
                    objDs.Tables["Pauta"].Rows.Add(idReuniao, -1, "", "Concluído");
                }

                if (!(objDs.Tables["Pauta"].DefaultView.Find("Em Andamento") >= 0))
                {
                    objDs.Tables["Pauta"].Rows.Add(idReuniao, -1, "", "Em Andamento");
                }



                //Grava o arquivo no sharepoint

                //Limpa os arquivos anexos da reuniao

                MemoryStream msArquivo = new MemoryStream();
                objRelatorio.ExportToRtf(msArquivo);

                //monta o nome do arquivo
                string strNomeArquivo = string.Format("ATA_PREVENTIVAS_{0:dd_MM_yyyy}_.RTF", objReuniao.dt_reuniao);
                GravaAtaReuniao(objReuniao.ID_Reuniao, strNomeArquivo, msArquivo.ToArray());

                //seta os componentes
                this.btnEnviarEmail.CommandArgument = objReuniao.ID_Reuniao.ToString();

                this.btnVisualizar.NavigateUrl = string.Format("/ComunidadePreventivasVoc/Lists/Reunioes/Attachments/{0}/{1}", objReuniao.ID_Reuniao, strNomeArquivo);



                this.pnlErro.Visible      = false;
                this.pnlResultado.Visible = true;
            }
            catch (Exception ex)
            {
                this.lblErro.Text    = "Erro ao gerar a ATA o erro foi: " + ex.Message;
                this.pnlErro.Visible = true;
            }
        }