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); }
}//GetCausas public static List <Produtividade> GetTratamentos(DateTime dt_ini, DateTime dt_fim) { spsWrapper2 objWrapper = new spsWrapper2(); string strQuery = string.Format("<Where><And><Neq><FieldRef Name='Causa'/><Value Type='Text'>Retorno de operadora</Value></Neq><And><IsNotNull><FieldRef Name='Tratamento'/></IsNotNull><And><Geq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{0:yyyy-MM-dd}</Value></Geq><Leq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{1:yyyy-MM-dd}</Value></Leq></And></And></And></Where>", dt_ini, dt_fim); string strViewFields = @"<FieldRef Name='Created' /><FieldRef Name='Tratamento' />"; var lstProd = objWrapper.RetornaLista("Produtividade", strQuery, strViewFields, SPContext.Current.Web.ID); var objSaida = (from p in lstProd group p by new { Periodo = Convert.ToDateTime(p["Created"]).Date, Tratamento = Convert.ToString(p["Tratamento"]) } into pp select new Produtividade { Tratamento = pp.Key.Tratamento, Periodo = pp.Key.Periodo.ToString("yyyy-MM-dd 00:00:00"), PeriodoFormatado = pp.Key.Periodo.ToString("dd/MMM"), qtdRecs = pp.Count() }).OrderBy(f => f.Periodo).ToList(); return(objSaida); }//GetCausas
public static Object[] GetExport(DateTime dt_ini, DateTime dt_fim) { spsWrapper2 objWrapper = new spsWrapper2(); string strViewFields = @"<FieldRef Name='Title' /><FieldRef Name='Created' /><FieldRef Name='Usuario' /><FieldRef Name='Causa' /> <FieldRef Name='Tratamento'/>"; string strQuery; strQuery = string.Format("<Where><And><Geq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{0:yyyy-MM-dd}</Value></Geq><Leq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{1:yyyy-MM-dd}</Value></Leq></And></Where>", dt_ini, dt_fim); var lstProd = objWrapper.RetornaLista("Produtividade", strQuery, strViewFields, SPContext.Current.Web.ID); //Agrupa a saida var objSaida = (from p in lstProd select new { Periodo = Convert.ToDateTime(p["Created"]).Hour.ToString(), Num_rec = Convert.ToString(p.Title), Login = Convert.ToString(p["Usuario"]).Replace(@"SHAREPOINT\", "").Replace(@"EMBRATEL\", ""), Funcionario = spsWrapper.Utilidades.NomeUsuario(Convert.ToString(p["Usuario"]).Replace(@"SHAREPOINT\", "").Replace(@"EMBRATEL\", "")), Data_Cadastro = Convert.ToDateTime(p["Created"]).ToString("dd/MM/yyyy"), Hora_Cadastro = Convert.ToDateTime(p["Created"]).ToString("HH:mm"), Causa = Convert.ToString(p["Causa"]), Tratamento = Convert.ToString(p["Tratamento"]) }).ToArray(); return(objSaida); }
protected void btnSalvar_Click(object sender, EventArgs e) { string strErro = string.Empty; if (string.IsNullOrEmpty(txtRecs.Text)) { strErro = "Favor informar o n da rec"; } if (string.IsNullOrEmpty(this.cboCausa.Text) || !(this.cboCausa.SelectedIndex > 0)) { strErro = "Favor selecionar a causa"; } if (cboCausa.Text == "Rec indevida pela NET" && !(cboTratamento.SelectedIndex > 0)) { strErro = "Favor selecionar o tratamento"; } if (!string.IsNullOrEmpty(strErro)) { this.lblErro.Text = strErro; this.pnlFalha.Visible = true; this.pnlSucesso.Visible = false; return; } else { this.pnlFalha.Visible = false; } spsWrapper2 objWrapper = new spsWrapper2(); //Cria o item de insert Dictionary <string, object> objInsert = new Dictionary <string, object>(); objInsert.Add("Usuario", SPContext.Current.Web.CurrentUser.LoginName); objInsert.Add("Title", txtRecs.Text); objInsert.Add("Causa", cboCausa.Text); if (cboCausa.Text == "Rec indevida pela NET") { objInsert.Add("Tratamento", this.cboTratamento.Text); } objWrapper.AdicionaItemLista("Produtividade", objInsert); this.pnlSucesso.Visible = true; this.pnlFalha.Visible = false; this.txtRecs.Text = string.Empty; }
protected void btnEnviarEmail_Click(object sender, EventArgs e) { try { spsWrapper2 objWrapper = new spsWrapper2(); //Carrega a Reunião Reuniao objReuniao = CarregaReuniao(Convert.ToInt32(btnEnviarEmail.CommandArgument)); if (!(objReuniao.Participantes.Count > 0)) { throw new Exception("Nenhum participante localizado!"); } //Carrega o ListItem para capturar os anxos SPListItem objItem = objWrapper.RetornaItem("Reunioes", objReuniao.ID_Reuniao, SPContext.Current.Web.ID); //Verifica se existe o anexo para ser enviado. if (!(objItem.Attachments.Count > 0)) { throw new Exception("ATA não gerada! você deve gerar a ATA da reunião antes de enviar!"); } //Cria o anexo Dictionary <string, Byte[]> objAnexo = new Dictionary <string, byte[]>(); /* * SPFolder folder = web.Folders["Lists"].SubFolders[strListName].SubFolders["Attachments"].SubFolders[item.ID.ToString()]; * foreach(SPFile file in folder.Files) */ foreach (SPFile arquivo in SPContext.Current.Web.Folders["Lists"].SubFolders[objItem.ParentList.Title].SubFolders["Attachments"].SubFolders[objItem.ID.ToString()].Files) { objAnexo.Add(arquivo.Name, arquivo.OpenBinary()); } //Para cada participante da reunião com o e-mail preenchido foreach (Participante participante in objReuniao.Participantes.Where(f => f.Email != string.Empty)) { //Cria o corpo e o assunto montando os campos dinâmicos string strAssunto = Assunto.Replace("@titulo", objReuniao.Titulo).Replace("@dt_reuniao", objReuniao.dt_reuniao.ToString("dd/MM/yyyy")).Replace("@nome", participante.Nome); string strCorpo = Corpo.Replace("@titulo", objReuniao.Titulo).Replace("@dt_reuniao", objReuniao.dt_reuniao.ToString("dd/MM/yyyy")).Replace("@nome", participante.Nome); spsWrapper.Utilidades.EnviaEmail(participante.Email, strAssunto, strCorpo, objAnexo); } this.lblResultado.Text = "ATA enviada com sucesso!"; } catch (Exception ex) { this.lblErro.Text = ex.Message; this.pnlErro.Visible = true; } }
public static List <Participante> Participantes(int id_reuniao) { spsWrapper2 objWrapper = new spsWrapper2(); return ((from SPListItem item in objWrapper.RetornaLista("ParticipantesReuniao", new string[] { "id_usuario" }, SPContext.Current.Web.ID) where item.Title == id_reuniao.ToString() select new Participante { Nome = SPContext.Current.Web.EnsureUser(Convert.ToString(item["id_usuario"])).Name, ID_Reuniao = id_reuniao, Email = SPContext.Current.Web.EnsureUser(Convert.ToString(item["id_usuario"])).Email }).ToList()); }
private void CarregaDatasReunioes() { //cria o obj spsWrapper2 objWrapper = new spsWrapper2(); var listaReunioes = from SPListItem item in objWrapper.RetornaLista("Reunioes", new string[] { "Title", "Hora de Início" }, SPContext.Current.Web.ID) select new { dt_evento = ((DateTime)item["Hora de Início"]).ToString("dd/MM/yyyy"), dt_evento_date = ((DateTime)item["Hora de Início"]), ID = item.ID }; this.cboDataReuniao.DataSource = listaReunioes.OrderByDescending(f => f.dt_evento_date); this.cboDataReuniao.DataBind(); }
protected void GravaAtaReuniao(int id_reuniao, string NomeArquivo, Byte[] barAta) { //Cria o Wrapper spsWrapper2 objWrapper = new spsWrapper2(); //Limpa os anexos if (!objWrapper.LimpaAnexos("Reunioes", id_reuniao, SPContext.Current.Web.ID)) { throw new Exception(objWrapper.Erro); } //Adiciona o novo Anexo if (!objWrapper.AdicionaAnexo("Reunioes", id_reuniao, NomeArquivo, barAta, SPContext.Current.Web.ID)) { throw new Exception(objWrapper.Erro); } }
private void CarregaAlertas() { spsWrapper2 objWrapper = new spsWrapper2(); var ds = from f in objWrapper.RetornaLista("Alertas", new [] { "Title", "DataInicio", "DataFim" }, SPContext.Current.Site.AllWebs["ComunidadeOperacoesVoc"].ID) where (DateTime.Now.Date >= Convert.ToDateTime(f["DataInicio"]).Date) && (DateTime.Now.Date <= Convert.ToDateTime(f["DataFim"]).Date) select new { Titulo = f.Title, Inicio = Convert.ToDateTime(f["DataInicio"]), Fim = Convert.ToDateTime(f["DataFim"]) }; if (ds.Count() > 0) { this.rptMain.DataSource = ds; this.rptMain.DataBind(); this.pnlAlertas.Visible = true; } ; }
public static List <Pauta> Pautas() { //Cria o wrapper spsWrapper2 objWrapper = new spsWrapper2(); // List<SPListItem> objTmpTarefa; // List<SPListItem> objTmpItemTarefa; DateTime tp = DateTime.Now; List <ItemTarefa> objTmpItemTarefa = (from SPListItem i in objWrapper.RetornaLista("Detalhe Tarefa", new string[] { "Author", "Modified", "Created", "Status", "DataReuniao", "Responsavel", "Tarefa", "Detalhes", "Prazo" }, SPContext.Current.Site.AllWebs["ComunidadePreventivasVoc"].ID) select new ItemTarefa { Titulo = i.Title, Autor = spsWrapper.Utilidades.NomeUsuario(((string)i["Author"]).Split('#')[1]), Criado = Convert.ToDateTime(i["Created"]), Modificado = Convert.ToDateTime(i["Modified"]), Status = Convert.ToString(i["Status"]), Detalhes = Convert.ToString(i["Detalhes"]), ID = i.ID, dt_reuniao = Convert.ToDateTime(i["DataReuniao"]), LoginResponsavel = Convert.ToString(i["Responsavel"]), Prazo = Convert.ToDateTime(i["Prazo"]), Responsavel = spsWrapper.Utilidades.NomeUsuario(Convert.ToString(i["Responsavel"])), ID_TAREFA = Convert.ToInt32(i["Tarefa"].ToString().Split(";#".ToCharArray())[0]) }).ToList(); List <Tarefa> objTmpTarefa = (from SPListItem i in objWrapper.RetornaLista("Tarefas Da Pauta", new string[] { "Attachments", "Title", "Atribuidaa", "Data_x0020_de_x0020_Conclus_x00e", "Data_x0020_Prevista", "Data_x0020_Reuni_x00e3_o", "Detalhes", "Modified", "Created", "Pauta" }, SPContext.Current.Site.AllWebs["ComunidadePreventivasVoc"].ID) select new Tarefa { Titulo = i.Title, Anexos = spsWrapper.Utilidades.MontaLinksAnexo(i.Attachments), Atribuidaa = spsWrapper.Utilidades.NomeUsuario(Convert.ToString(i["Atribuidaa"])), DataConclusao = Convert.ToDateTime(i["Data_x0020_de_x0020_Conclus_x00e"]), DataPrevista = Convert.ToDateTime(i["Data_x0020_Prevista"]), DataReuniao = Convert.ToDateTime(i["Data_x0020_Reuni_x00e3_o"]), Descricao = Convert.ToString(i["Detalhes"]), Modificado = Convert.ToDateTime(i["Modified"]), Criado = Convert.ToDateTime(i["Created"]), ID = i.ID, ID_Pauta = string.IsNullOrEmpty(Convert.ToString(i["Pauta"])) ? 0 : Convert.ToInt32(i["Pauta"].ToString().Split(";#".ToCharArray())[0]), Itens = objTmpItemTarefa.Where(f => f.ID_TAREFA == i.ID).ToList() }).ToList(); //Cria o objeto de saída List <Pauta> objSaida = new List <Pauta>(); //para cada Pauta carrega todo o conteúdo dela. foreach (SPListItem p in objWrapper.RetornaLista("Pautas", new string[] { "Attachments", "Title", "Created", "Modified", "Responsavel", "Observacoes", "Data_x0020_da_x0020_Reuniao" }, SPContext.Current.Site.AllWebs["ComunidadePreventivasVoc"].ID)) { Pauta objPauta = new Pauta(); objPauta.ID = p.ID; objPauta.DataReuniao = (DateTime?)p["Data_x0020_da_x0020_Reuniao"]; objPauta.Observacoes = (string)p["Observacoes"]; objPauta.Responsavel = (p["Responsavel"] == null) ? "" : spsWrapper.Utilidades.NomeUsuario(((string)p["Responsavel"]).Split('#')[1]); objPauta.Titulo = p.Title; objPauta.Anexos = spsWrapper.Utilidades.MontaLinksAnexo(p.Attachments); objPauta.Modificado = (DateTime?)p["Modified"]; objPauta.Criado = (DateTime?)p["Created"]; //Adiciona as tarefas objPauta.Tarefas = objTmpTarefa.Where(f => f.ID_Pauta == p.ID).ToList(); objSaida.Add(objPauta); } ; double qtdTotal = DateTime.Now.Subtract(tp).TotalSeconds; return(objSaida); }
protected void Page_Load(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(_strLista)) { this.divAcessoRapido.InnerHtml = "Lista não configurada, edite a webpart e configure a lista que alimentará o acesso rápido"; return; } if (!Page.IsPostBack) { spsWrapper2 objWrapper = new spsWrapper2(); var Query = @"<OrderBy><FieldRef Name='Posicao' Ascending='True' /></OrderBy>"; var itens = objWrapper.RetornaListaPorUrl(_strLista, Query); if (itens == null) { this.divAcessoRapido.InnerHtml = "Biblioteca inválida ou não compatível com a Webpart"; return; } string output = ""; foreach (SPListItem item in itens) { object url = item["URL"]; output += html .Replace("{url}", url != null ? new SPFieldUrlValue(url.ToString()).Url : "#") .Replace("{img}", item.Url) .Replace("{title}", item.Title); } divAcessoRapido.InnerHtml = output; //verifica se a quantidade é suficiente para encher a tela (habilitar script0 string strScript = @"<script type='text/javascript'> // Initialize the plugin with no custom options $(document).ready(function () { var qtdRegistros = " + itens.Count.ToString() + @"; var tamanhoContainer = $('#dvContainerAcessoRapido').width(); $('.acessoRapido').width(tamanhoContainer); if(qtdRegistros * 56 > tamanhoContainer + 30) $('.acessoRapido').smoothDivScroll({ autoScrollingMode: '' }); }); </script>"; this.Page.ClientScript.RegisterStartupScript(this.GetType(), "AcessoRapido", strScript); } } catch (Exception ex) { this.divAcessoRapido.InnerHtml = "Erro ao carregar a webpart. o erro foi : " + ex.Message; } }
void CarregaLista() { try { //Monta um array com todas as colunas var arcolunas = this.configurationItem.Columns.Where(f => f.Visible || f.Grouped).OrderBy(f => f.Order).Select(f => f.Id).ToArray(); spsWrapper2 objWrapper = new spsWrapper2(); var objLista = objWrapper.RetornaLista(SPContext.Current.Web.ID, this.configurationItem.Lista); this.lblHack.Text = string.Format("<div class='ag_hackTitulo' titulo='{0}' url='{1}'></div>", this.Title, objWrapper.RetornaUrlLista(SPContext.Current.Web.ID, this.configurationItem.Lista) ); if (objLista == null) { lblErro.Text = "Lista não localizada!"; return; } //Cria o datatable e carrega a tabela DataTable dtDs = new DataTable(); arcolunas.ToList().ForEach(f => dtDs.Columns.Add(f)); dtDs.Columns.Add("ORDENACAO", typeof(string)); List <DataColumn> dtmp = new List <DataColumn>(); //string strOrderBy = ""; //foreach ( var col in arcolunas ) // { // dtDs.Columns.Add(new DataColumn(col + "_SORT")); // strOrderBy += col + "_SORT ,"; // } //Cria as colunas // strOrderBy = strOrderBy.Substring(0,strOrderBy.LastIndexOf(",")); //para cada item na lista... foreach (SPListItem item in objLista) { DataRow r = dtDs.NewRow(); string strTmpOrdenacao = ""; //para cada campo (visivel ou agrupado) //foreach (string s in arcolunas) for (int i = 0; i < arcolunas.Length; i++) { string s = arcolunas[i]; try { r[s] = formataValor(item[new Guid(s)], item.Fields[new Guid(s)], item); } catch { r[s] = "Campo não localizado"; } //try { r[s + "_SORT"] = getExpSortIndex( formataValor(item[new Guid(s)], item.Fields[new Guid(s)], item) ) ; } //catch { r[s] = "Campo não localizado"; } try { strTmpOrdenacao += getExpSortIndex(formataValor(item[new Guid(s)], item.Fields[new Guid(s)], item)) + "_"; } catch { strTmpOrdenacao += "Campo não localizado_"; } } r["ORDENACAO"] = strTmpOrdenacao; dtDs.Rows.Add(r); } dtDs.DefaultView.Sort = "ORDENACAO"; dtDs = dtDs.DefaultView.ToTable(); //Joga a saida já ordenada para o grid this.dGridMain.DataSource = dtDs; this.dGridMain.DataBind(); this.dGridMain.Visible = true; for (int i = 0; i < this.configurationItem.GroupedColumns.Count; i++) { dGridMain.GroupBy(dGridMain.Columns[this.configurationItem.GroupedColumns[i].Id], i); // dGridMain.SortBy(dGridMain.Columns[this.configurationItem.GroupedColumns[i].Id + "_SORT"], i); } dGridMain.Columns["ORDENACAO"].Visible = false; foreach (var c in this.dGridMain.AllColumns) { // if (c.ToString().EndsWith("_SORT")) // c.Visible = false; } foreach (var c in this.configurationItem.Columns.Where(f => f.Visible || f.Grouped)) { dGridMain.Columns[c.Id].Caption = c.DisplayName; (dGridMain.Columns[c.Id] as DevExpress.Web.ASPxGridView.GridViewDataTextColumn).PropertiesTextEdit.EncodeHtml = false; } } catch (Exception ex) { lblErro.Text = "Erro ao carregar a Webpart. Lista:" + this.configurationItem.Lista.ToString() + " o Erro foi: " + ex.Message; } }
public static List <Produtividade> GetHoraria(DateTime dt) { spsWrapper2 objWrapper = new spsWrapper2(); string strViewFields = @"<FieldRef Name='Title' /><FieldRef Name='Created' /><FieldRef Name='Usuario' />"; string strQuery; strQuery = string.Format("<Where><And><Geq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{0:yyyy-MM-dd}</Value></Geq><Leq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{1:yyyy-MM-dd}</Value></Leq></And></Where>", dt, dt); var lstProd = objWrapper.RetornaLista("Produtividade", strQuery, strViewFields, SPContext.Current.Web.ID); //Agrupa a saida var objSaida = (from p in lstProd group p by new { Periodo = Convert.ToDateTime(p["Created"]).Hour.ToString(), id_usuario = Convert.ToString(p["Usuario"]).Replace(@"SHAREPOINT\", "").Replace(@"EMBRATEL\", "") } into pp select new Produtividade { id_usuario = pp.Key.id_usuario, Periodo = pp.Key.Periodo, qtdRecs = pp.Count(), Funcionario = spsWrapper.Utilidades.NomeUsuario(pp.Key.id_usuario) }).ToList(); /* * var prodTMP = new Produtividade[] { * new Produtividade { id_usuario = "fulano", Periodo="0", qtdRecs=3 } , * new Produtividade { id_usuario = "fulano", Periodo="1", qtdRecs=1 } , * new Produtividade { id_usuario = "fulano", Periodo="5", qtdRecs=1 } , * new Produtividade { id_usuario = "fulano", Periodo="6", qtdRecs=1 } , * new Produtividade { id_usuario = "fulano", Periodo="17", qtdRecs=1 } , * new Produtividade { id_usuario = "fulano", Periodo="9", qtdRecs=3 } , * new Produtividade { id_usuario = "fulano", Periodo="10", qtdRecs=2 } , * new Produtividade { id_usuario = "fulano", Periodo="21", qtdRecs=1 } , * new Produtividade { id_usuario = "fulano", Periodo="23", qtdRecs=1 } , * * new Produtividade { id_usuario = "outra", Periodo="2", qtdRecs=1 } , * new Produtividade { id_usuario = "outra", Periodo="3", qtdRecs=1 } , * new Produtividade { id_usuario = "outra", Periodo="4", qtdRecs=2 } , * new Produtividade { id_usuario = "outra", Periodo="5", qtdRecs=1 } , * new Produtividade { id_usuario = "outra", Periodo="6", qtdRecs=2 } , * new Produtividade { id_usuario = "outra", Periodo="17", qtdRecs=3 } , * new Produtividade { id_usuario = "outra", Periodo="8", qtdRecs=4 } , * new Produtividade { id_usuario = "outra", Periodo="22", qtdRecs=4 } , * new Produtividade { id_usuario = "outra", Periodo="23", qtdRecs=1 } , * new Produtividade { id_usuario = "Last one!! ", Periodo="17", qtdRecs=1 } * * * * * }; * * * * return prodTMP.ToList();*/ return(objSaida); }
//Conexão com portal. (Diária por usuário) public static List <Produtividade> GetDiaria(DateTime dt_ini, DateTime dt_fim, string id_usuario) { spsWrapper2 objWrapper = new spsWrapper2(); string strViewFields = @"<FieldRef Name='Title' /><FieldRef Name='Created' /><FieldRef Name='Usuario' />"; string strQuery; if (id_usuario == null) { strQuery = string.Format("<Where><And><Geq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{0:yyyy-MM-dd}</Value></Geq><Leq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{1:yyyy-MM-dd}</Value></Leq></And></Where>", dt_ini, dt_fim); } else { strQuery = string.Format("<Where><And><And><Geq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{0:yyyy-MM-dd}</Value></Geq><Leq><FieldRef Name='Created' /><Value Type='DateTime' IncludeTimeValue='FALSE'>{1:yyyy-MM-dd}</Value></Leq></And><Eq><FieldRef Name='Usuario' /><Value Type='Text'>{2}</Value></Eq></And></Where>", dt_ini, dt_fim, id_usuario); } var lstProd = objWrapper.RetornaLista("Produtividade", strQuery, strViewFields, SPContext.Current.Web.ID); //Agrupa por dia. var objSaida = (from p in lstProd group p by new { Periodo = Convert.ToDateTime(p["Created"]).Date, id_usuario = Convert.ToString(p["Usuario"]) } into pp select new Produtividade { id_usuario = pp.Key.id_usuario, Periodo = pp.Key.Periodo.ToString("yyyy-MM-dd 00:00:00"), qtdRecs = pp.Count(), Funcionario = spsWrapper.Utilidades.NomeUsuario(pp.Key.id_usuario) }).ToList(); //Tapa os Buracos List <Produtividade> prdInsert = new List <Produtividade>(); foreach (var usuario in (from u in objSaida select new { u.id_usuario, u.Funcionario }).Distinct()) { //Tapa os buracos for (DateTime d = dt_ini; d < dt_fim; d = d.AddDays(1)) { if (objSaida.Find(f => f.Periodo == d.ToString("yyyy-MM-dd 00:00:00") && f.id_usuario == usuario.id_usuario) == null) { prdInsert.Add(new Produtividade { Funcionario = usuario.Funcionario, Periodo = d.ToString("yyyy-MM-dd hh:mm:ss"), PeriodoFormatado = d.ToString("dd/MMM"), id_usuario = usuario.id_usuario, qtdRecs = 0 }); } } } objSaida.AddRange(prdInsert); return(objSaida.OrderBy(f => f.Periodo).ToList()); }