This commit is contained in:
rrene
2020-08-31 14:57:10 -07:00
9 changed files with 556 additions and 371 deletions

View File

@@ -13,7 +13,7 @@
tr[hide="1"] {
display: none;
background-color: rgb(4,71,103);
background-color: rgb(4,71,103)
}
.portlet {
@@ -180,24 +180,6 @@
<asp:RequiredFieldValidator ID="RfvTxtLugar" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtLugar" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Lugar''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Lugar:" AssociatedControlID="TxtLugar"></asp:Label>
</div>
<div class="row" style="width:100%">
<div class="col-sm-6" style="width:50%">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Inicio''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaI" runat="server" Text="Fecha"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaI" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
</div>
<div class="col-sm-6" style="width:50%">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtDuracion" runat="server" CssClass="form-control " CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVTxtDuracion" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtDuracion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Asunto''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Duración:" AssociatedControlID="TxtDuracion"></asp:Label>
</div>
</div>
</div>
<asp:Panel ID="pnlmiembrosvista" Visible="false" runat="server">
<div class="pnlCorreo" style="margin-bottom: 5px;">
<div class="headerCorreo ">
@@ -217,13 +199,26 @@
</div>
</asp:Panel>
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtDuracion" runat="server" CssClass="form-control " CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVTxtDuracion" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtDuracion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Asunto''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Duración:" AssociatedControlID="TxtDuracion"></asp:Label>
</div>
<div class="form-group form-md-line-input">
<asp:TextBox ID="TxtCorreoExterno" runat="server" CssClass="form-control TxtCorreoExterno" CausesValidation="true" TextMode="MultiLine" Rows="2"></asp:TextBox>
<%--<asp:RequiredFieldValidator ID="RfvCorreoExterno" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtCorreoExterno" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Correo Externo''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>--%>
<asp:Label runat="server" Text="Correos Externos" AssociatedControlID="TxtCorreoExterno"></asp:Label>
</div>
<div class="row">
<div class="col-sm-6">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Inicio''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaI" runat="server" Text="Fecha Inicio"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaI" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
</div>
<div class="col-sm-6" style="display: none;">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaF" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px " placeholder=""></asp:TextBox>
@@ -299,8 +294,7 @@
<ItemStyle HorizontalAlign="Center" Width="50px" />
<HeaderTemplate>
C. C. Para
<br />
<br />
<%--<a id="chkAll" onclick="chkAll_OncLick(1);" class="linkCorreo" data-toggle="tooltip" title="Seleccionar todos(Visibles)"><i class="fa fa-check-square-o"></i></a>
<a id="UnchkAll" onclick="chkAll_OncLick(0);" class="linkCorreo" data-toggle="tooltip" title="Quitar seleccion todos(Visibles)"><i class="fa fa-square-o"></i></a>--%>
</HeaderTemplate>
@@ -419,7 +413,6 @@
<ItemStyle HorizontalAlign="Center" Width="50px" />
<HeaderTemplate>
C. C. Para
<br />
<%--<a id="chkAll" onclick="chkAll_OncLick(1);" class="linkCorreo" data-toggle="tooltip" title="Seleccionar todos(Visibles)"><i class="fa fa-check-square-o"></i></a>
<a id="UnchkAll" onclick="chkAll_OncLick(0);" class="linkCorreo" data-toggle="tooltip" title="Quitar seleccion todos(Visibles)"><i class="fa fa fa-square-o"></i></a>--%>
@@ -475,7 +468,6 @@
<ItemStyle HorizontalAlign="Center" Width="50px" />
<HeaderTemplate>
Asistió
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkAsistio" CssClass="ChkOk" Checked='<%# Eval("Asistencia").ToString()=="1" %>' runat="server" />
@@ -517,7 +509,18 @@
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
let CveRol = -1;
let CveSucursal = -1;

View File

@@ -401,7 +401,7 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
ruta = string.Format("{0}{1}", ruta, archivoname);//, ArchivoExtencion);
System.IO.File.Move(rutaarchivoOri, ruta);
}
this.Alert("Se ha agregadó la nueva convocatoria", ModExtensiones.TipoMensaje.MsgInformacion, string.Format("location.replace(\"/OI/ConvocatoriaDetalle.aspx?CveEvento={0}\");", CveEvento));
this.Alert(string.Format("Se ha agregadó la nueva convocatoria.<br/><a href=\"data:text/plain;charset=utf-8,{0}\" download=\"Agendar.ics\" class=\"btn btn-default\">⏰ Agendar</a>", HttpUtility.UrlEncode(ICString)), ModExtensiones.TipoMensaje.MsgInformacion, string.Format("location.replace(\"/OI/ConvocatoriaDetalle.aspx?CveEvento={0}\");", CveEvento));
}
}
}
@@ -422,7 +422,7 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
{
objOI.Commit();
enviarConvocatoria(RCveEvento);
Alert("Convocatoria actualizada");
Alert(string.Format("Convocatoria actualizada.<br/><a href=\"data:text/plain;charset=utf-8,{0}\" download=\"Agendar.ics\" class=\"btn btn-default\">⏰ Agendar</a>", HttpUtility.UrlEncode(ICString)));
}
else
{
@@ -585,14 +585,21 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
{
return string.Format("{0}/{1}", HttpContext.Current.Request.Url.ToString().Replace(HttpContext.Current.Request.Url.PathAndQuery, ""), addstr);
}
string UsuarioDemail = "";
private string MailgetBodyConvocatoria(int RCveEvento)
string UsuarioDemail = "";
string ICString = "";
private void enviarConvocatoria(int RCveEvento)
{
int Folio = 0; string Link = ""; string Asunto = ""; string Acuerdos = ""; string Descripcion = ""; DateTime DFechai = DateTime.MinValue; DateTime DFechaf = DateTime.MinValue;
string Body;
string UsuarioDe = "";
#region "Body"
int Folio = 0; string Link = ""; string Asunto = ""; string Acuerdos = ""; string Descripcion = ""; DateTime DFechai = DateTime.MinValue; DateTime DFechaf = DateTime.MinValue;
UsuarioDe = "";
string UsuarioPara = "";
string UsuarioDeAbr = "";
string CorreoRegistro = "";
System.Data.DataTable dttareas;
using (ClsOIEventos ObjOI_E = new ClsOIEventos())
{
@@ -600,7 +607,8 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
{
System.Data.DataRow drow = ObjOI_E.DtResultados.Rows[0];
UsuarioDe = drow["NombreRegistro"].ToString();
UsuarioDemail= drow["NombreRegistro"].ToString();
UsuarioDemail = drow["NombreRegistro"].ToString();
CorreoRegistro = drow["CorreoRegistro"].ToString().Split(',')[0].Split(';')[0];
Folio = drow["Folio"].ToString().ToEntero();
Link = GetDominio(string.Format("OI/ConvocatoriaDetalle.aspx?CveEvento={0}", RCveEvento));
Asunto = drow["Asunto"].ToString();
@@ -700,13 +708,12 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
StrMail.Append(" </div>");
StrMail.Append(" </div>");
StrMail.Append("</html></body>");
return StrMail.ToString();
}
private void enviarConvocatoria(int RCveEvento)
{
string Body;
Body = MailgetBodyConvocatoria(RCveEvento);
#endregion
Body = StrMail.ToString();//MailgetBodyConvocatoria(RCveEvento);
string ArrayCC = "";
//ViewState("Para") = GlobalDTUsuarios(CveUsuarioIng)(0)("correo").ToString;
//ViewState("Asunto") = string.Format("SIG - Minuta {0}", TxtAsunto.Text);
@@ -728,7 +735,11 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
}
List<ClsSisMail.ArchivoMail> LSRutasMail = new List<ClsSisMail.ArchivoMail>();
ClsSisMail.ArchivoMail mailfile = new ClsSisMail.ArchivoMail { Ruta = string.Format("{0}Imagenes\\Bell.png", ModExtensiones.DirectorioBaseEmpresas), NombreArchivo = "Bell.png" };
LSRutasMail.Add(mailfile);
LSRutasMail.Add(mailfile);
ICString = GenerateIcsContent(string.Format("{0:yyyy/MM/dd} 00:00", txtFechaI.Text.ToDateTime()).ToDateTime(), string.Format("{0:yyyy/MM/dd} 23:59", txtFechaI.Text.ToDateTime()).ToDateTime(),
UsuarioDe, CorreoRegistro, TxtLugar.Text, Asunto,Descripcion,string.Format("Convocatoria_{0}",RCveEvento) );
ClsSisMail.ArchivoMail ICSFile = new ClsSisMail.ArchivoMail { Ruta = "",ArchivoBinario= Encoding.ASCII.GetBytes(ICString), NombreArchivo = "Agendar.ics" };
LSRutasMail.Add(ICSFile);
ClsSisMail.ArchivoMail itemMail = new ClsSisMail.ArchivoMail();
@@ -742,31 +753,44 @@ public partial class OI_ConvocatoriaDetalle : ClsPaginas
}
public string GenerateIcsContent(DateTime dateStart,
DateTime dateEnd, string email, string location,
string summary, string description)
public string GenerateIcsContent(DateTime FechaInicio, DateTime FechaFin, string Nombreorganizador, string Correoorganizador, string Ubicacion, string Asunto, string descripcion, string uuid)
{
string DateFormat = "yyyyMMddTHHmmssZ";
var s = dateStart.ToUniversalTime().ToString(DateFormat);
var e = dateEnd.ToUniversalTime().ToString(DateFormat);
var iCal = string.Format(@"BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
ORGANIZER:MAILTO:{0}
DTSTART:{1}
DTEND:{2}
LOCATION:{3}
UID:{4}
DTSTAMP:{4}
SUMMARY:{5}
DESCRIPTION:{6}
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR", email, s, e, location,
DateTime.Now.ToUniversalTime().ToString(DateFormat),
summary, description);
return iCal;
var DTSTART = FechaInicio.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
var DTEND = FechaFin.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
/*
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
*/
StringBuilder strICS = new StringBuilder();
strICS.AppendLine("BEGIN:VCALENDAR");
strICS.AppendLine("VERSION:2.0");
strICS.AppendLine("METHOD:PUBLISH");
strICS.AppendLine("BEGIN:VEVENT");
strICS.AppendLine(string.Format("ORGANIZER;CN={0}:MAILTO:{1}", Nombreorganizador.Replace(":", "").Replace(";", ""), Correoorganizador));
strICS.AppendLine(string.Format("DTSTART:{0}", DTSTART));
strICS.AppendLine(string.Format("DTEND:{0}", DTEND));
strICS.AppendLine(string.Format("LOCATION:{0}", Ubicacion));
strICS.AppendLine(string.Format("UID:{0}", uuid));
strICS.AppendLine(string.Format("DTSTAMP:{0}", DateTime.Now.ToUniversalTime().ToString("yyyyMMddTHHmmssZ")));
strICS.AppendLine(string.Format("SUMMARY:{0}", Asunto));
strICS.AppendLine(string.Format("DESCRIPTION:{0}", descripcion));
strICS.AppendLine("PRIORITY:5");
strICS.AppendLine("CLASS:PUBLIC");
strICS.AppendLine("END:VEVENT");
strICS.AppendLine("END:VCALENDAR");
return strICS.ToString();
}
}

View File

@@ -164,7 +164,7 @@
<asp:TextBox ID="TxtArchivoPropuesta" CssClass="ADSdropzone hidden" runat="server" Style="height: 100px"></asp:TextBox>
<br />
<asp:Label runat="server" ID="Label2" Text="Comentarios:" style="font-size:15px"/>
<textarea runat="server" id="TxtComentarios" class="form-control" style="border: 1px solid #e5e5e5" rows="2"></textarea>
<textarea runat="server" id="TxtComentarios" class="form-control" style="border: 1px solid #e5e5e5" rows="2" maxlength="300"></textarea>
</div>
<div class="modal-footer">
<asp:Button ID="BtnAgregarPropuesta" OnClick="BtnAgregarPropuesta_Click" runat="server" class="btn btn-success" Text="Agregar" ValidationGroup="GrpTiposD" />

View File

@@ -746,25 +746,31 @@ public partial class OI_MinutaDetalle : ClsPaginas
protected void LnkTerminarMinuta_Click(object sender, EventArgs e)
{
// Cambiar el estatus a Terminada para inabilitarla y que no se pueda modificar
ClsOIEventos objOI = new ClsOIEventos();
int tCveSeguimiento;
bool HuboError = false;
objOI.IniciaTransacSQL();
tCveSeguimiento = objOI.AddEventoComentario2(RCveEvento, "Termino minuta.", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa);
if (tCveSeguimiento > 0)
using (ClsOIEventos objOI = new ClsOIEventos())
{
if (!objOI.UpdateEstatusEvento2(4, tCveSeguimiento, RCveEvento, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa))
HuboError = true;
objOI.IniciaTransacSQL();
tCveSeguimiento = objOI.AddEventoComentario2(RCveEvento, "Termino minuta.", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa);
if (tCveSeguimiento > 0)
{
if (!objOI.UpdateEstatusEvento2(4, tCveSeguimiento, RCveEvento, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa))
HuboError = true;
}
else { HuboError = true; }
if (HuboError == false)
{
objOI.Commit();
}
else
{
objOI.RollBack();
}
}
if (HuboError == false)
{
if (!EnviarMinuta()) { HuboError = true; Alert("Ocurrió un error al terminar la minuta. no se pudo enviar el correo.", ModExtensiones.TipoMensaje.MsgError); }
}
else
HuboError = true;
// 'Envia minuta si es modificada
if (HuboError == false)
@@ -775,22 +781,6 @@ public partial class OI_MinutaDetalle : ClsPaginas
script = string.Format("location.replace(\"/OI/ConvocatoriaDetalle.aspx?CveEventoPadre={0}\");", RCveEvento);
}
Alert("La minuta ha finalizado.", ModExtensiones.TipoMensaje.MsgInformacion, script);
objOI.Commit();
}
else
{
Alert("Ocurrió un error al terminar la minuta. Por favor vuelva a intentar.", ModExtensiones.TipoMensaje.MsgError);
objOI.RollBack();
}
objOI.Dispose();
if (HuboError == false)
{
if (!EnviarMinuta())
HuboError = true;
Alert("La minuta se termino con exito.", ModExtensiones.TipoMensaje.MsgInformacion);
}
LnkEnviarMinuta.Visible = true;
@@ -833,7 +823,7 @@ public partial class OI_MinutaDetalle : ClsPaginas
private string MailgetBodyMinuta()
{
int Folio=0; string Link=""; string Asunto = ""; string Acuerdos = ""; string Descripcion = ""; DateTime DFechai=DateTime.MinValue; DateTime DFechaf = DateTime.MinValue;
int Folio = 0; string Link = ""; string Asunto = ""; string Acuerdos = ""; string Descripcion = ""; DateTime DFechai = DateTime.MinValue; DateTime DFechaf = DateTime.MinValue;
string UsuarioDe = "";
string UsuarioPara = "";
string UsuarioDeAbr = "";
@@ -875,7 +865,7 @@ public partial class OI_MinutaDetalle : ClsPaginas
if (UsuarioPara != null)
{
string[] str = UsuarioPara.Split(' ');
if (str.Length > 0 && str[0].Length >0)
if (str.Length > 0 && str[0].Length > 0)
{
UsuariParaAbr = str[0].Substring(0, 1).ToUpper();
}
@@ -899,7 +889,7 @@ public partial class OI_MinutaDetalle : ClsPaginas
StrMail.Append(" <span style=\"color: #6C6C6C; font-size: 17px;\">Moderador:</span>");
StrMail.Append($" <span style=\"color: #ED7D31; font-size: 22px;font-weight: bold;\">{UsuarioDeAbr}</span>");
StrMail.Append($" <span style=\"color: #6C6C6C; font-size: 17px;\">{UsuarioDe}</span><br />");
StrMail.Append(" <span style=\"color: #6C6C6C; font-size: 17px;\">Fecha:</span>");
StrMail.Append(" <span style=\"color: #6C6C6C; font-size: 17px;\">Fecha:</span>");
StrMail.Append($" <span style=\"color: #6C6C6C; font-size: 17px;\">{DFechai: dd} de {DFechai: MMMM yyyy HH:mm}</span><br />");
StrMail.Append(" </td>");
StrMail.Append(" <td style=\"width: 20%;\">");
@@ -940,21 +930,21 @@ public partial class OI_MinutaDetalle : ClsPaginas
if(dttareas != null && dttareas.Rows.Count > 0)
if (dttareas != null && dttareas.Rows.Count > 0)
{
StrMail.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%\">");
StrMail.Append(" <thead>");
StrMail.Append(" <tr style=\"background-color:#dddddd;\">");
StrMail.Append(" <th scope=\"col\">Folio</th>");
StrMail.Append(" <th scope=\"col\">Asunto</th>");
StrMail.Append(" <th scope=\"col\">Descripción</th>");
StrMail.Append(" <th scope=\"col\">Para</th>");
StrMail.Append(" <th scope=\"col\">Inicio</th>");
StrMail.Append(" <th scope=\"col\">Fin</th>");
StrMail.Append(" </tr>");
StrMail.Append(" </thead>");
StrMail.Append(" <tbody>");
foreach (System.Data.DataRow drow in dttareas.Rows )
StrMail.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%\">");
StrMail.Append(" <thead>");
StrMail.Append(" <tr style=\"background-color:#dddddd;\">");
StrMail.Append(" <th scope=\"col\">Folio</th>");
StrMail.Append(" <th scope=\"col\">Asunto</th>");
StrMail.Append(" <th scope=\"col\">Descripción</th>");
StrMail.Append(" <th scope=\"col\">Para</th>");
StrMail.Append(" <th scope=\"col\">Inicio</th>");
StrMail.Append(" <th scope=\"col\">Fin</th>");
StrMail.Append(" </tr>");
StrMail.Append(" </thead>");
StrMail.Append(" <tbody>");
foreach (System.Data.DataRow drow in dttareas.Rows)
{
StrMail.Append(" <tr>");
@@ -966,8 +956,8 @@ public partial class OI_MinutaDetalle : ClsPaginas
StrMail.Append($" <td>{drow["FechaFin"]: dd/MM/yyyy}</td>");
StrMail.Append(" </tr>");
}
StrMail.Append(" </tbody>");
StrMail.Append("</table>");
StrMail.Append(" </tbody>");
StrMail.Append("</table>");
}
else
{
@@ -1006,14 +996,14 @@ public partial class OI_MinutaDetalle : ClsPaginas
//System.Threading.Thread Hilo = new System.Threading.Thread(MandaCorreo);
//Hilo.Start();
string abre = "";
using (ClsOIEventos ObjOI_E =new ClsOIEventos())
{
if (ObjOI_E.GetEventosUsuario2(RCveEvento, UsuarioActual.CveEmpresa) && ObjOI_E.DtResultados!=null && ObjOI_E.DtResultados.Rows.Count >0)
using (ClsOIEventos ObjOI_E = new ClsOIEventos())
{
if (ObjOI_E.GetEventosUsuario2(RCveEvento, UsuarioActual.CveEmpresa) && ObjOI_E.DtResultados != null && ObjOI_E.DtResultados.Rows.Count > 0)
{
foreach (System.Data.DataRow item in ObjOI_E.DtResultados.Rows )
foreach (System.Data.DataRow item in ObjOI_E.DtResultados.Rows)
{
if (item["Correo"].ToString().Trim().Length >0)
ArrayCC = string.Format("{0}{1}{2}", ArrayCC,abre, item["Correo"].ToString().Trim());
if (item["Correo"].ToString().Trim().Length > 0)
ArrayCC = string.Format("{0}{1}{2}", ArrayCC, abre, item["Correo"].ToString().Trim());
abre = ";";
}
}
@@ -1025,7 +1015,7 @@ public partial class OI_MinutaDetalle : ClsPaginas
ClsSisMail Mail = new ClsSisMail();
Mail.SendMail(EmpresaNotificaciones, get_GlobalDTUsuarios(UsuarioActual.CveUsuario).Rows[0]["correo"].ToString() +";"+ TxtCorreoExterno.Text, TxtAsunto.Text, Body, CCP: ArrayCC,Archivos: LSRutasMail);
Mail.SendMail(EmpresaNotificaciones, get_GlobalDTUsuarios(UsuarioActual.CveUsuario).Rows[0]["correo"].ToString() + ";" + TxtCorreoExterno.Text, TxtAsunto.Text, Body, CCP: ArrayCC, Archivos: LSRutasMail);
//Alert("Se Envió por correo la Minuta", ModExtensiones.TipoMensaje.MsgInformacion);
Retorno = true;
}
@@ -1378,8 +1368,44 @@ public partial class OI_MinutaDetalle : ClsPaginas
LnkTerminarMinuta_Click(null, null);
}
public string GenerateIcsContent(DateTime FechaInicio, DateTime FechaFin, string Nombreorganizador, string Correoorganizador, string Ubicacion, string Asunto, string descripcion, string uuid)
{
var DTSTART = FechaInicio.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
var DTEND = FechaFin.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
/*
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
*/
StringBuilder strICS = new StringBuilder();
strICS.Append("BEGIN:VCALENDAR");
strICS.Append("VERSION:2.0");
strICS.Append("METHOD:PUBLISH");
strICS.Append("BEGIN:VEVENT");
strICS.AppendFormat("ORGANIZER;CN={0}:MAILTO:{1}", Nombreorganizador.Replace(":", "").Replace(";", ""), Correoorganizador);
strICS.AppendFormat("DTSTART:{0}", DTSTART);
strICS.AppendFormat("DTEND:{0}", DTEND);
strICS.AppendFormat("LOCATION:{0}", Ubicacion);
strICS.AppendFormat("UID:{0}", uuid);
strICS.AppendFormat("DTSTAMP:{0}", DateTime.Now.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
strICS.AppendFormat("SUMMARY:{0}", Asunto);
strICS.AppendFormat("DESCRIPTION:{0}", descripcion);
strICS.Append("PRIORITY:5");
strICS.Append("CLASS:PUBLIC");
strICS.Append("END:VEVENT");
strICS.Append("END:VCALENDAR");
return strICS.ToString();
}
protected void LnkOpenModalAsistencia_Click(object sender, EventArgs e)

View File

@@ -31,12 +31,17 @@
padding-left: 10px;
line-height: 25px;
}
.gantt-samples-banner_controls_bar.controls_bar, .gantt_scale_line .gantt_scale_cell, .gantt_grid_scale .gantt_grid_head_cell, .gantt_grid_scale .gantt_grid_head_cell a, .gantt_grid_scale .gantt_grid_head_cell a:hover {
background-color: #95a5a6 !important;
color: #FFF !important;
}
</style>
<%--<link href="/Metronic/assets/global/plugins/GantJS/jsgantt.css" rel="stylesheet" type="text/css" />--%>
<link rel="stylesheet" href="/Metronic/assets/global/plugins/dhtmlxgantt/dhtmlxgantt.css" type="text/css">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Proyecto:
Proyecto:<asp:Label ID="LblAsunto" runat="server" Text=""></asp:Label>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
@@ -58,143 +63,146 @@
<ContentTemplate>
<div class="gantt-samples-banner_controls_bar controls_bar">
<div class="gantt-samples-banner_controls_bar controls_bar">
<strong>Formato: &nbsp; </strong>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="week">
<span>Horas</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="trplweek" checked="true">
<span>Día</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="year">
<span>Mes</span></label>
<strong>Formato: &nbsp; </strong>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="week">
<span>Horas</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="trplweek" checked="true">
<span>Día</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="year">
<span>Mes</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="yearyear">
<span>año</span></label>
<div id="filter_hours" style="display: none;">
<div id="filter_hours" style="display: none;">
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_day">
<span>Dia Completo</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_hours">
<span>Horario de Oficina</span>
</label>
</div>
<div id="filter_days" style="">
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_day">
<span>Dia Completo</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_hours">
<span>Horario de Oficina</span>
</label>
</div>
<div id="filter_days" style="">
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_week">
<span>Semana completa</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_week">
<span>Dias de Trabajo</span>
</label>
</div>
</div>
<div id="gantt_here" style='width: 100%; height: 100vh;'></div>
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_week">
<span>Semana completa</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_week">
<span>Dias de Trabajo</span>
</label>
</div>
</div>
<div id="gantt_here" style='width: 100%; height: 100vh;'></div>
<div id='<%= iddivAgregarProyecto %>' class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpModalProyecto" class="modal-content " tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span> </button>
<h4 class="modal-title" style="text-align: left">
<asp:Literal ID="LtlTituloNewProyecto" runat="server">Proyecto</asp:Literal></h4>
</div>
<div class="modal-body">
<asp:Panel runat="server" ID="portletTarea" class="portlet light smmallpadding bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Nuevo</span>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
</div>
<div id='<%= iddivAgregarProyecto %>' class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpModalProyecto" class="modal-content " tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span> </button>
<h4 class="modal-title" style="text-align: left">
<asp:Literal ID="LtlTituloNewProyecto" runat="server">Proyecto</asp:Literal></h4>
</div>
<div class="portlet-body rowpadding">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtAsunto" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVAsunto" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtAsunto" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Asunto''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Asunto:" AssociatedControlID="TxtAsunto"></asp:Label>
</div>
<div class="form-group form-md-line-input">
<asp:TextBox ID="TxtDescripcion" runat="server" CssClass="form-control" CausesValidation="true" TextMode="MultiLine" Rows="2"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvDescripcion" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtDescripcion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Descripción''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Descripción" AssociatedControlID="TxtDescripcion"></asp:Label>
</div>
<div class="modal-body">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlPara" runat="server" CssClass="form-control select2me input-sm" DataValueField="CveUsuario" DataTextField="Nombre" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione" Value="-1"></asp:ListItem>
</asp:DropDownList>
<asp:Label runat="server" AssociatedControlID="DdlPara">Para:</asp:Label>
</div>
<div class="row">
<div class="col-sm-6">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Inicio''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaI" runat="server" Text="Fecha Inicio"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaI" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
<asp:Panel runat="server" ID="portletTarea" class="portlet light smmallpadding bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Nuevo</span>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
</div>
</div>
<div class="col-sm-6">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaF" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px " placeholder=""></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaF" runat="server" ControlToValidate="txtFechaF" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Fin''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaF" runat="server" Text="Fecha Fin"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaF" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaF" Width="350px"></ajax:ValidatorCalloutExtender>
<div class="portlet-body rowpadding">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtAsunto" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVAsunto" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtAsunto" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Asunto''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Asunto:" AssociatedControlID="TxtAsunto"></asp:Label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlPrioridad" runat="server" CssClass="form-control select2me input-sm" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione" Value="-1"></asp:ListItem>
<asp:ListItem Text="Baja" Value="1" class="itembaja"></asp:ListItem>
<asp:ListItem Text="Media" Value="2" class="itemmedia"></asp:ListItem>
<asp:ListItem Text="Alta" Value="3" class="itemalta"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVPrioridad" runat="server" ControlToValidate="DdlPrioridad" Display="None" ErrorMessage="El campo <b>''Prioridad''</b> es necesario, por favor seleccione uno." InitialValue="-1" ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" AssociatedControlID="DdlPrioridad">Prioridad:</asp:Label>
<ajax:ValidatorCalloutExtender ID="VCOPrio" runat="server" TargetControlID="RFVPrioridad" HighlightCssClass="vco" Width="300px"></ajax:ValidatorCalloutExtender>
<asp:TextBox ID="TxtDescripcion" runat="server" CssClass="form-control" CausesValidation="true" TextMode="MultiLine" Rows="2"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvDescripcion" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtDescripcion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Descripción''</b> es necesario, por favor ingréselo." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" Text="Descripción" AssociatedControlID="TxtDescripcion"></asp:Label>
</div>
</div>
<div class="col-sm-6">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlTema" runat="server" CssClass="form-control select2me input-sm" DataValueField="CveRevision" DataTextField="Revision" Width="100%">
<asp:DropDownList ID="DdlPara" runat="server" CssClass="form-control select2me input-sm" DataValueField="CveUsuario" DataTextField="Nombre" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione" Value="-1"></asp:ListItem>
</asp:DropDownList>
<asp:Label runat="server" AssociatedControlID="DdlTema">Tema:</asp:Label>
<asp:Label runat="server" AssociatedControlID="DdlPara">Para:</asp:Label>
</div>
<div class="row">
<div class="col-sm-6">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Inicio''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaI" runat="server" Text="Fecha Inicio"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaI" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
</div>
<div class="col-sm-6">
<div class="input-group form-group form-md-line-input date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaF" runat="server" autocomplete="false" CssClass="form-control ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px " placeholder=""></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVtxtFechaF" runat="server" ControlToValidate="txtFechaF" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Fin''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label AssociatedControlID="txtFechaF" runat="server" Text="Fecha Fin"></asp:Label>
<%--<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999 99:99" MaskType="DateTime" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>--%>
<ajax:ValidatorCalloutExtender ID="VcoFechaF" runat="server" HighlightCssClass="vco" TargetControlID="RFVtxtFechaF" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlPrioridad" runat="server" CssClass="form-control select2me input-sm" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione" Value="-1"></asp:ListItem>
<asp:ListItem Text="Baja" Value="1" class="itembaja"></asp:ListItem>
<asp:ListItem Text="Media" Value="2" class="itemmedia"></asp:ListItem>
<asp:ListItem Text="Alta" Value="3" class="itemalta"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVPrioridad" runat="server" ControlToValidate="DdlPrioridad" Display="None" ErrorMessage="El campo <b>''Prioridad''</b> es necesario, por favor seleccione uno." InitialValue="-1" ValidationGroup="GrpTarea"></asp:RequiredFieldValidator>
<asp:Label runat="server" AssociatedControlID="DdlPrioridad">Prioridad:</asp:Label>
<ajax:ValidatorCalloutExtender ID="VCOPrio" runat="server" TargetControlID="RFVPrioridad" HighlightCssClass="vco" Width="300px"></ajax:ValidatorCalloutExtender>
</div>
</div>
<div class="col-sm-6">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlTema" runat="server" CssClass="form-control select2me input-sm" DataValueField="CveRevision" DataTextField="Revision" Width="100%">
<asp:ListItem Selected="True" Text="Seleccione" Value="-1"></asp:ListItem>
</asp:DropDownList>
<asp:Label runat="server" AssociatedControlID="DdlTema">Tema:</asp:Label>
</div>
</div>
</div>
</div>
</div>
</asp:Panel>
<asp:TextBox ID="txtCveEvento" CssClass="hidden txtCveEvento" runat="server"></asp:TextBox>
<asp:Button ID="BtnopenmodalClickGant" OnClick="BtnopenmodalClickGant_Click" CssClass="hidden BtnopenmodalClickGant" UseSubmitBehavior="false" runat="server" Text="Button" />
</div>
</asp:Panel>
<asp:TextBox ID="txtCveEvento" CssClass="hidden txtCveEvento" runat="server"></asp:TextBox>
<asp:Button ID="BtnopenmodalClickGant" OnClick="BtnopenmodalClickGant_Click" CssClass="hidden BtnopenmodalClickGant" UseSubmitBehavior="false" runat="server" Text="Button" />
</div>
<div class="modal-footer">
<asp:LinkButton ID="btnguardarProyecto" OnClick="btnguardarProyecto_Click" CssClass="btn btn-primary" runat="server">Guardar</asp:LinkButton>
<button data-dismiss="modal" class="btn btn-danger">Cancelar</button>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div class="modal-footer">
<asp:LinkButton ID="btnguardarProyecto" OnClick="btnguardarProyecto_Click" CssClass="btn btn-primary" runat="server">Guardar</asp:LinkButton>
<button data-dismiss="modal" class="btn btn-danger">Cancelar</button>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<script src="/Metronic/assets/global/plugins/dhtmlxgantt/dhtmlxgantt.js"></script>
@@ -204,129 +212,141 @@
<script>
let RCveEvento =<%= RCveEvento %>;
function NuevoEvento(CveEvento) {
$('.txtCveEvento').val(CveEvento);
$('.BtnopenmodalClickGant').click();
}
function zoom_tasks(node) {
switch (node.value) {
case "week":
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
function zoom_tasks(node) {
switch (node.value) {
case "week":
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
gantt.config.scale_height = 60;
gantt.config.min_column_width = 30;
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
show_scale_options("hour");
break;
case "trplweek":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
gantt.config.subscales = [];
gantt.config.scale_height = 35;
show_scale_options("day");
break;
case "month":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "week";
gantt.config.date_scale = "Week #%W";
gantt.config.subscales = [
{ unit: "day", step: 1, date: "%D" }
];
show_scale_options();
gantt.config.scale_height = 60;
break;
case "year":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "month";
gantt.config.date_scale = "%M";
gantt.config.scale_height = 60;
show_scale_options();
gantt.config.subscales = [
{ unit: "week", step: 1, date: "#%W" }
];
break;
}
set_scale_units();
gantt.render();
gantt.config.scale_height = 60;
gantt.config.min_column_width = 30;
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
show_scale_options("hour");
break;
case "trplweek":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
gantt.config.subscales = [];
gantt.config.scale_height = 35;
show_scale_options("day");
break;
case "month":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "week";
gantt.config.date_scale = "Week #%W";
gantt.config.subscales = [
{ unit: "day", step: 1, date: "%D" }
];
show_scale_options();
gantt.config.scale_height = 60;
break;
case "year":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "month";
gantt.config.date_scale = "%M";
gantt.config.scale_height = 60;
show_scale_options();
gantt.config.subscales = [
{ unit: "week", step: 1, date: "#%W" }
];
break;
case "yearyear":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "month";
gantt.config.date_scale = "%y %M";
gantt.config.scale_height = 60;
show_scale_options();
gantt.config.subscales = [
{ unit: "month", step: 1, date: "#%M" }
];
break;
}
function show_scale_options(mode) {
var hourConf = document.getElementById("filter_hours"),
dayConf = document.getElementById("filter_days");
if (mode == 'day') {
hourConf.style.display = "none";
dayConf.style.display = "";
dayConf.getElementsByTagName("input")[0].checked = true;
} else if (mode == "hour") {
hourConf.style.display = "";
dayConf.style.display = "none";
hourConf.getElementsByTagName("input")[0].checked = true;
} else {
hourConf.style.display = "none";
dayConf.style.display = "none";
}
set_scale_units();
gantt.render();
}
function show_scale_options(mode) {
var hourConf = document.getElementById("filter_hours"),
dayConf = document.getElementById("filter_days");
if (mode == 'day') {
hourConf.style.display = "none";
dayConf.style.display = "";
dayConf.getElementsByTagName("input")[0].checked = true;
} else if (mode == "hour") {
hourConf.style.display = "";
dayConf.style.display = "none";
hourConf.getElementsByTagName("input")[0].checked = true;
} else {
hourConf.style.display = "none";
dayConf.style.display = "none";
}
function set_scale_units(mode) {
if (mode && mode.getAttribute) {
mode = mode.getAttribute("value");
}
switch (mode) {
case "work_hours":
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
gantt.ignore_time = function (date) {
if (date.getHours() < 9 || date.getHours() > 16) {
return true;
} else {
return false;
}
};
break;
case "full_day":
gantt.config.subscales = [
{ unit: "hour", step: 3, date: "%H" }
];
gantt.ignore_time = null;
break;
case "work_week":
gantt.ignore_time = function (date) {
if (date.getDay() == 0 || date.getDay() == 6) {
return true;
} else {
return false;
}
};
break;
default:
gantt.ignore_time = null;
break;
}
gantt.render();
}
function set_scale_units(mode) {
if (mode && mode.getAttribute) {
mode = mode.getAttribute("value");
}
switch (mode) {
case "work_hours":
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
gantt.ignore_time = function (date) {
if (date.getHours() < 9 || date.getHours() > 16) {
return true;
} else {
return false;
}
};
break;
case "full_day":
gantt.config.subscales = [
{ unit: "hour", step: 3, date: "%H" }
];
gantt.ignore_time = null;
break;
case "work_week":
gantt.ignore_time = function (date) {
if (date.getDay() == 0 || date.getDay() == 6) {
return true;
} else {
return false;
}
};
break;
default:
gantt.ignore_time = null;
break;
}
gantt.render();
}
var datosGant = [];
function loadGant() {
gantt.config.date_format = "%Y-%m-%d %H:%i";
gantt.config.order_branch = true;
gantt.i18n.setLocale("es");
gantt.init("gantt_here");
gantt.config.columns = [
{ name: "text", label: "Proyecto ", width: "*", min_width: 350, tree: true, resize: true, template: function (obj) { return "<a href=\"/OI/TareaDetalle.aspx?CveEvento="+obj.id+"\" target=\"_Blank\">" + obj.text + " </a>" } },
{ name: "text", label: "Proyecto ", width: "*", min_width: 350, tree: true, resize: true, template: function (obj) { return "<a href=\"/OI/TareaDetalle.aspx?CveEvento=" + obj.id + "\" target=\"_Blank\">" + obj.text + " </a>" } },
{ name: "start_date", label: "Inicio", min_width: 90, align: "center" },
{ name: "end_date", label: "Fin", min_width: 90, align: "center" },
{ name: "progress", label: "Avance", align: "center", template: function (obj) { return "" + (obj.progress * 100) + " %" } },
{ name: "duration", label: "Duracion", align: "center" },
{ name: "new", label: "<i class='fa fa-plus'></i>", align: "center",template: function (obj) { return "<a onclick=\"NuevoEvento("+obj.id+");\" target=\"_Blank\"><i class='fa fa-plus'></i> </a>" } }
{ name: "progress", label: "Avance", align: "center", template: function (obj) { return "" + (obj.progress * 100).toFixed(2) + " %" } },
{ name: "duration", label: "Duración", align: "center" },
{ name: "new", label: "<a onclick=\"NuevoEvento(" + RCveEvento + ");\" target=\"_Blank\"><i class='fa fa-plus'></i></a>", align: "center", template: function (obj) { return "<a onclick=\"NuevoEvento(" + obj.id + ");\" target=\"_Blank\"><i class='fa fa-plus'></i> </a>" } }
/*{name:"staff", label:"Holder(s)", template:function(obj){return obj.holder+"("+obj.progress+")"} },*/
//{ name: "add", label: "" }
];
gantt.parse({
data:datosGant
data: datosGant
//data: [
// { id: 1, text: "Apertura de Sucursal", start_date: null, duration: null, parent: 0, progress: 0, open: true },
// { id: 2, text: "Direccion: evaluación de mercado", start_date: "2020/04/29 00:00", end_date: "2020/05/02 00:00",/*duration: 3,*/ parent: 1, progress: 0.25 },
@@ -336,7 +356,7 @@
// { id: 6, text: "Propaganda,Mkt: Inaguración", start_date: "2020/05/05 00:00", duration: 6, parent: 1, progress: 0.1 },
// //{id: 7, text: "", start_date: "2020/05/ 00:00", duration:5, parent:1, progress: 1},
// //{id: 8, text: "", start_date: "2020/05/ 00:00", duration:5, parent:1, progress: 1},
// { id: 7, text: "Asamblea Anual", start_date: null, duration: null, parent: 0, progress: 0, open: true },
// { id: 8, text: "Contabilidad: Impuestos", start_date: "2020/05/05 00:00", duration: 13, parent: 7, progress: 0.6 },
// { id: 9, text: "Contabilida: utilidad o pérdida", start_date: "2020/05/06 00:00", duration: 9, parent: 7, progress: 0.5 },
@@ -351,14 +371,30 @@
//]
/*,
links:[
{id:1, source:2, target:3, type:"0"},
{id:2, source:3, target:4, type:"0"},
{id:3, source:5, target:6, type:"0"}
]*/
links:[
{id:1, source:2, target:3, type:"0"},
{id:2, source:3, target:4, type:"0"},
{id:3, source:5, target:6, type:"0"}
]*/
});
}
gantt.attachEvent("onBeforeTaskMove", function (id, parent, tindex) {
console.log(tindex)
var task = gantt.getTask(id);
if (task.parent != parent)
return false;
return true;
});
gantt.attachEvent("onRowDragEnd", function (id, target,tindex) {
console.log(tindex)
debugger;
drag_id = null;
gantt.render();
});
loadGant();
</script>
<%--<script>

View File

@@ -50,7 +50,14 @@ public partial class OI_Proyecto : ClsPaginas
str.AppendLine("datosGant=[");
using (ClsOIEventos oieve = new ClsOIEventos())
{
if (oieve.GetTareaConHijos(RCveEvento,UsuarioActual.CveEmpresa))
if (oieve.GetEventos2(RCveEvento, UsuarioActual.CveEmpresa) && oieve.DtResultados.Rows.Count > 0)
{
System.Data.DataRow drow = oieve.DtResultados.Rows[0];
LblAsunto.Text = drow["Asunto"].ToString();
}
if (oieve.GetTareaConHijos(RCveEvento,UsuarioActual.CveEmpresa))
{
foreach (System.Data.DataRow dr in oieve.DtResultados.Select("Nivel > 0"))
{

View File

@@ -5,17 +5,17 @@
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
.sortableList h4 {
background-color: #EEE;
background-color: #ccc;
margin: 0px;
padding-top: 10px;
padding-bottom: 10px;
text-align: center;
font-weight: 500;
font-weight: 600;
}
.sortableList {
border: 1px solid #eee;
width: 250px;
width: 258px;
margin-right: 10px;
}
@@ -31,7 +31,9 @@
min-height: 20px;
width: 250px;
padding: 5px 0 0 0;
margin: 0;
background-color: #eee;
border: dotted #ccc;
margin: 4px;
}
.sortableList ul li {
@@ -45,17 +47,22 @@
padding: 7px 35px 7px 5px;
}
ul.ListSorter > li {
background-color: #fff;
float: left;
}
ul.ListSorter > li {
background-color: #fff;
float: left;
}
.sortableList ul li .btn.edit {
padding: 2px 4px;
position: absolute;
right: 5px;
top: 4px;
}
.sortableList ul li .btn.edit {
padding: 2px 4px;
position: absolute;
right: 5px;
top: 4px;
}
.bootomadd {
padding: 4px;
padding-bottom: 8px;
}
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
@@ -99,7 +106,7 @@
</ItemTemplate>
</asp:Repeater>
</ul>
<div class="text-center">
<div class="text-center bootomadd">
<%# String.Format("<a class=\"btn btn-default\" onclick=\"OpenModalNewTareaUserControl(1,-1,{{CveTableroLista:{0}}});\"> <i class=\"fa fa-plus\"'></i> </a>",Eval("CveTableroLista")) %>
</div>
@@ -170,15 +177,42 @@
<asp:UpdatePanel runat="server" ID="Uppositionevento" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="BtnUpPosition" OnClick="BtnUpPosition_Click" runat="server" Text="Agregar" CssClass="btn btn-primary hidden BtnUpPosition" UseSubmitBehavior="false" ValidationGroup="VGMTablzxczxc" />
<asp:TextBox ID="Txtcvetablerolista" CssClass=" hidden Txtcvetablerolista" runat="server"></asp:TextBox><asp:TextBox ID="txtCveEvento" CssClass="txtCveEvento hidden" runat="server"></asp:TextBox>
<asp:TextBox ID="TxtCveOrdeList" CssClass=" hidden TxtCveOrdeList" runat="server"></asp:TextBox>
<asp:Button ID="BtnOrderList" runat="server" OnClick="BtnOrderList_Click" CssClass="btn btn-primary hidden BtnOrderList" UseSubmitBehavior="false" ValidationGroup="VGMTablzxczxzc" />
<asp:TextBox ID="Txtcvetablerolista" CssClass=" hidden Txtcvetablerolista" runat="server"></asp:TextBox>
<asp:TextBox ID="txtCveEvento" CssClass="txtCveEvento hidden" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
<script>
let CurrentorderList = ''
function GetOrderList() {
let OrdeList = '';
let separator = '';
let Orden = 1;
$('.ListSorter > li').each(function () {
OrdeList = OrdeList + separator + Orden + ':' + $(this).data('cvetablerolista');
separator = ',';
Orden = Orden + 1;
});
return OrdeList;
}
function GetOrderListEvento(ulelement) {
let OrdeList = '';
let separator = '';
let Orden = 1;
ulelement.find(' li').each(function () {
OrdeList = OrdeList + separator + Orden + ':' + $(this).data('cveevento');
separator = ',';
Orden = Orden + 1;
});
return OrdeList;
}
function ADSReady() {
CurrentorderList = GetOrderList();
var cvetablerolistaold = 0;
var cvetablerolistanew = 0;
@@ -190,7 +224,16 @@
setTimeout(function () {
cvetablerolistanew = $(event.srcElement).data('cvetablerolista');
//let cveevento = $(event.srcElement).data('cveevento');
//$('.Txtcvetablerolista').val(cvetablerolistanew);
setTimeout(function () {
let OrdeList = GetOrderList();
$('.TxtCveOrdeList').val(OrdeList);
console.log(OrdeList);
if (CurrentorderList != OrdeList) {
$('.BtnOrderList').click();
}
CurrentorderList = OrdeList;
}, 20);
//$('.txtCveEvento').val(cveevento);
//$('.BtnUpPosition').click();
}, 20);
@@ -202,8 +245,11 @@
start: function (event, ui) { cvetablerolistaold = $(event.srcElement).closest('ul').data('cvetablerolista'); },
stop: function (event, ui) {
setTimeout(function () {
cvetablerolistanew = $(event.srcElement).closest('ul').data('cvetablerolista');
let ulelement = $(event.srcElement).closest('ul');
cvetablerolistanew = ulelement.data('cvetablerolista');
let cveevento = $(event.srcElement).data('cveevento');
let OrdeList = GetOrderListEvento(ulelement);
$('.TxtCveOrdeList').val(OrdeList);
$('.Txtcvetablerolista').val(cvetablerolistanew);
$('.txtCveEvento').val(cveevento);
$('.BtnUpPosition').click();

View File

@@ -164,9 +164,42 @@ public partial class OI_TableroDetalle : ClsPaginas
protected void BtnUpPosition_Click(object sender, EventArgs e)
{
bool continuar = false;
using (ClsOIEventos eveobj = new ClsOIEventos())
{
eveobj.UpEventoLista(Txtcvetablerolista.Text.ToEntero(), txtCveEvento.Text.ToEntero());
eveobj.IniciaTransacSQL();
continuar =eveobj.UpEventoLista(Txtcvetablerolista.Text.ToEntero(), txtCveEvento.Text.ToEntero());
if (continuar)
{
List<string> orderlist = TxtCveOrdeList.Text.Split(',').ToList<string>();
continuar = eveobj.OrdenaTareas(orderlist, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario);
}
if (continuar)
{
eveobj.Commit();
}
else
{
eveobj.RollBack();
}
}
}
protected void BtnOrderList_Click(object sender, EventArgs e)
{
List<string> orderlist = TxtCveOrdeList.Text.Split(',').ToList<string>();
using (ClsOIEventos eveobj = new ClsOIEventos())
{
eveobj.IniciaTransacSQL();
if(eveobj.OrdenaListas(orderlist,UsuarioActual.CveEmpresa,UsuarioActual.CveUsuario))
{
eveobj.Commit();
}
else
{
eveobj.RollBack();
}
}
}
}

View File

@@ -86,6 +86,16 @@