public int add(TareaDTO TareaDTO) { using (var context = getContext()) { try { Tarea Tarea = new Tarea(); Tarea.Nombre = TareaDTO.NombreTarea; Tarea.Descripcion = TareaDTO.Descripcion; Tarea.Observaciones = TareaDTO.Observaciones; Tarea.FechaInicio = (TareaDTO.FechaInicio != null ? Convert.ToDateTime(TareaDTO.FechaInicio.Value.ToString("dd/MM/yyyy") + " " + TareaDTO.HoraInicio + ":" + TareaDTO.MinutoInicio) : TareaDTO.FechaInicio); Tarea.FechaFin = (TareaDTO.FechaFin != null ? Convert.ToDateTime(TareaDTO.FechaFin.Value.ToString("dd/MM/yyyy") + " " + TareaDTO.HoraFin + ":" + TareaDTO.MinutoFin) : TareaDTO.FechaFin); Tarea.IdCliente = TareaDTO.IdCliente; Tarea.IdInmueble = TareaDTO.IdInmueble; Tarea.IdServicio = TareaDTO.IdServicio; if (TareaDTO.IdServicio == 4 || TareaDTO.IdServicio == 5) Tarea.IdPlantilla = (TareaDTO.IdPlantilla.GetValueOrDefault() != 0) ? TareaDTO.IdPlantilla : null; else Tarea.IdPlantilla = null; Tarea.IdEstado = TareaDTO.Responsables == null ? 1 : 2;//1 : Por Asignar, 2 : Asignado Tarea.Active = true; context.Tarea.Add(Tarea); foreach (var resp in TareaDTO.Responsables) { var responsable = context.Usuario.Where(x => x.IdUsuario == resp.IdUsuario).SingleOrDefault(); Tarea.Usuario.Add(responsable); } context.SaveChanges(); TareaDTO.FechaInicio = Tarea.FechaInicio; TareaDTO.FechaFin = Tarea.FechaFin; TareaDTO.Cliente = context.Cliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ClienteDTO { NombreEmpresa = y.Nombre }).FirstOrDefault(); TareaDTO.Cliente.Contactos = context.ContactoCliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ContactoDTO { Nombre = y.Nombre }).ToList(); TareaDTO.Inmueble = context.Inmueble.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new InmuebleDTO { NombreInmueble = y.Nombre }).FirstOrDefault(); TareaDTO.Responsables = context.Tarea.Where(x => x.IdTarea == Tarea.IdTarea).SingleOrDefault().Usuario.Select(x => new UsuarioDTO { IdUsuario = x.IdUsuario, Nombre = x.Nombre, Email = x.Email }).ToList(); TareaDTO.Servicio = context.Servicio.Where(x => x.IdServicio == Tarea.IdServicio).Select(y => new ServicioDTO { NombreServicio = y.Nombre, NombreCorto = y.NombreCorto }).FirstOrDefault(); TareaDTO.Estado = context.Estado.Where(x => x.IdEstado == Tarea.IdEstado).Select(y => new EstadoDTO { NombreEstado = y.NombreEstado }).FirstOrDefault(); TareaDTO.Plantilla = context.Plantilla.Where(x => x.IdPlantilla == Tarea.IdPlantilla).Select(y => new PlantillaDTO { IdPlantilla = y.IdPlantilla, Nombre = y.Nombre, Nombre2 = y.Nombre2 }).FirstOrDefault(); if (TareaDTO.Responsables.Count > 0) SendMailResponsable(TareaDTO, new List<int>(), TareaDTO.Responsables.Select(x => x.IdUsuario).ToList()); //SendMailResponsable(1, TareaDTO, null, null); return Tarea.IdTarea; } catch (Exception e) { throw e; //return false; } } }
public bool deleteTareaCalendario(int id) { using (var context = getContext()) { try { var Tarea = context.Tarea.Where(x => x.IdTarea == id).SingleOrDefault(); Tarea.FechaInicio = null; Tarea.FechaFin = null; var oldResponsables = Tarea.Usuario.Select(x => new UsuarioDTO { IdUsuario = x.IdUsuario, Nombre = x.Nombre, Email = x.Email }).ToList(); var responsablesToRemove = Tarea.Usuario.Select(x => x.IdUsuario).ToList(); foreach (var resp in responsablesToRemove) { var responsable = context.Usuario.Where(x => x.IdUsuario == resp).SingleOrDefault(); Tarea.Usuario.Remove(responsable); } context.SaveChanges(); if (responsablesToRemove.Count > 0) { TareaDTO oTareaDTO = new TareaDTO { NombreTarea = Tarea.Nombre, Descripcion = Tarea.Descripcion, FechaInicio = Tarea.FechaInicio, FechaFin = Tarea.FechaFin, Cliente = context.Cliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ClienteDTO { NombreEmpresa = y.Nombre }).FirstOrDefault(), Contactos = context.ContactoCliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ContactoDTO { Nombre = y.Nombre }).ToList(), Inmueble = context.Inmueble.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new InmuebleDTO { NombreInmueble = y.Nombre }).FirstOrDefault(), Responsables = oldResponsables,//context.Usuario.AsEnumerable().Where(y => responsablesToRemove.IndexOf(y.IdUsuario) > -1).Select(x => new UsuarioDTO { IdUsuario = x.IdUsuario, Nombre = x.Nombre, Email = x.Email }).ToList(), Servicio = context.Servicio.Where(x => x.IdServicio == Tarea.IdServicio).Select(y => new ServicioDTO { NombreServicio = y.Nombre, NombreCorto = y.NombreCorto }).FirstOrDefault(), Estado = context.Estado.Where(x => x.IdEstado == Tarea.IdEstado).Select(y => new EstadoDTO { NombreEstado = y.NombreEstado }).FirstOrDefault() }; SendMailResponsable(oTareaDTO, responsablesToRemove, new List<int>()); } return true; } catch (Exception e) { //throw e; return false; } } }
private void SendMailResponsable(TareaDTO oTareaDTO, List<int> responsablesRemoved, List<int> responsablesAdded) { /* * Evento * 1 : Asignado * 2 : Modificado -> Debe ser Re-agendado * 3 : Reasignado (Desasignacion + Asignacion) * 4 : Desagendado */ //Modificado: Aplica a la modificacion de todos los campos todos los campos de Tarea menos Responsables. if (responsablesRemoved.Count == 0 && responsablesAdded.Count == 0) { enviarCorreo("Se ha actualizado la tarea asignada: ", oTareaDTO, new List<int>()); } //Nuevo Responsable (Asignacion) if (responsablesAdded.Count > 0) { enviarCorreo("Se te ha asignado una nueva tarea: ", oTareaDTO, responsablesAdded); } //Removido Responsable (Desasignacion) if (responsablesRemoved.Count > 0) { enviarCorreo("Se ha eliminado la tarea asignada: ", oTareaDTO, responsablesRemoved); } //UsuariosBL oBL = new UsuariosBL(); //string to1 = ""; //int cont = 0; //string accion1 = (evento == 2 ? "modificado " : "asignado "); //string subject1 = "Se ha " + accion1 + "una tarea: " + oTareaDTO.NombreTarea; //string body = "<div>Nombre Tarea : " + oTareaDTO.NombreTarea + " </div>" + // "<div>Descripción : " + oTareaDTO.Descripcion + " </div>" + // "<div>Fecha Inicio : " + oTareaDTO.FechaInicio + " </div>" + // "<div>Fecha Fin : " + oTareaDTO.FechaFin + " </div>" + // "<div>Cliente : " + oTareaDTO.Cliente.NombreEmpresa + " </div>" + // "<div>Inmueble : " + oTareaDTO.Inmueble.NombreInmueble + " </div>" + // "<div>Responsable(s) : "; //foreach (var resp in oTareaDTO.Responsables) //{ // body += "<br/> - " + resp.Nombre; // if (cont == 0) to1 = resp.Email; else to1 += "," + resp.Email; // cont++; //} //body += " </div>" + "<div>Servicio : " + oTareaDTO.Servicio.NombreServicio + " </div>" + "<div>Estado : " + oTareaDTO.Estado.NombreEstado + " </div>"; //MailHandler.Send(to1, subject1, body); //if (evento == 3) //{ // string to2 = ""; // cont = 0; // foreach (var resp in responsablesRemoved) // { // //UsuarioDTO oOldUser = oBL.getUsuario(resp); // if (cont == 0) // { // to2 += resp.Email; // } // else { to2 += ", " + resp.Email; } // cont++; // } // string subject2 = "Se ha desasignado una tarea: " + oTareaDTO.NombreTarea; // MailHandler.Send(to2, subject2, body); //} }
private void enviarCorreo(string accion, TareaDTO oTareaDTO, List<int> toResponsables) { string to = string.Empty, copy = string.Empty, subject = string.Empty, body = string.Empty; //subject = "Se ha " + accion + " una tarea: " + oTareaDTO.NombreTarea; subject = accion + oTareaDTO.NombreTarea; body = "<div>Nombre Tarea : " + oTareaDTO.NombreTarea + " </div>" + "<div>Descripción : " + oTareaDTO.Descripcion + " </div>" + "<div>Fecha Inicio : " + oTareaDTO.FechaInicio + " </div>" + "<div>Fecha Fin : " + oTareaDTO.FechaFin + " </div>" + "<div>Cliente : " + oTareaDTO.Cliente.NombreEmpresa + " </div>" + "<div>Contactos : "; foreach (var contacto in oTareaDTO.Cliente.Contactos) { body += "<br/> - " + contacto.Nombre; } body += "<div>Inmueble : " + oTareaDTO.Inmueble.NombreInmueble + " </div>" + "<div>Responsable(s) : "; //if (toResponsables != null) UsuariosBL oBL = new UsuariosBL(); foreach (var resp in toResponsables) { to += oBL.getUsuario(resp).Email + ","; } foreach (var resp in oTareaDTO.Responsables) { body += "<br/> - " + resp.Nombre; if (toResponsables.Count > 0)//(toResponsables != null) { /*if (toResponsables.IndexOf(resp.IdUsuario) == -1) copy += resp.Email + ",";*/ } else to += resp.Email + ","; } to = to.Substring(0, to.Length - 1); copy = copy.Substring(0, copy.Length - (copy.Length == 0 ? 0 : 1)); body += " </div>" + "<div>Servicio : " + oTareaDTO.Servicio.NombreServicio + " </div>" + "<div>Estado : " + oTareaDTO.Estado.NombreEstado + " </div>"; if(oTareaDTO.Plantilla != null) { if(oTareaDTO.Plantilla.IdPlantilla != 0) body += "<div>Protocolo : " + oTareaDTO.Plantilla.Nombre + " - " + oTareaDTO.Plantilla.Nombre2 + " </div>"; } MailHandler.Send(to, copy, subject, body); //MailHandler.sendEmail(body); }
public int updateTareaResponsable(int tipoCorreo, TareaDTO oTareaDTO) { using (var context = getContext()) { try { var Tarea = context.Tarea.Where(x => x.IdTarea == oTareaDTO.IdTarea).SingleOrDefault(); var horaInicio = Tarea.FechaInicio != null ? Tarea.FechaInicio.Value.Hour : 0; var horaFin = Tarea.FechaFin != null ? Tarea.FechaFin.Value.Hour : 0; var minutoInicio = Tarea.FechaInicio != null ? Tarea.FechaInicio.Value.Minute : 0; var minutoFin = Tarea.FechaFin != null ? Tarea.FechaFin.Value.Minute : 0; Tarea.FechaInicio = (oTareaDTO.FechaInicio != null ? Convert.ToDateTime(oTareaDTO.FechaInicio.Value.ToString("dd/MM/yyyy") + " " + horaInicio + ":" + minutoInicio) : oTareaDTO.FechaInicio); Tarea.FechaFin = (oTareaDTO.FechaFin != null ? Convert.ToDateTime(oTareaDTO.FechaFin.Value.ToString("dd/MM/yyyy") + " " + horaFin + ":" + minutoFin) : oTareaDTO.FechaFin); Tarea.IdEstado = oTareaDTO.Responsables == null ? 1 : 2;//1 : Por Asignar, 2 : Asignado var oldResponsables = Tarea.Usuario.Select(x => x.IdUsuario).ToList(); var newResponsables = oTareaDTO.Responsables.Select(x => x.IdUsuario).ToList(); var responsablesToRemove = oldResponsables.Except(newResponsables).ToList(); var responsablesToAdd = newResponsables.Except(oldResponsables).ToList(); foreach (var resp in responsablesToRemove) { var responsable = context.Usuario.Where(x => x.IdUsuario == resp).SingleOrDefault(); Tarea.Usuario.Remove(responsable); } foreach (var resp in responsablesToAdd) { var responsable = context.Usuario.Where(x => x.IdUsuario == resp).SingleOrDefault(); Tarea.Usuario.Add(responsable); } context.SaveChanges(); oTareaDTO.NombreTarea = Tarea.Nombre; oTareaDTO.Descripcion = Tarea.Descripcion; oTareaDTO.FechaInicio = Tarea.FechaInicio; oTareaDTO.FechaFin = Tarea.FechaFin; oTareaDTO.Cliente = context.Cliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ClienteDTO { NombreEmpresa = y.Nombre }).FirstOrDefault(); oTareaDTO.Cliente.Contactos = context.ContactoCliente.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new ContactoDTO { Nombre = y.Nombre }).ToList(); oTareaDTO.Inmueble = context.Inmueble.Where(x => x.IdCliente == Tarea.IdCliente).Select(y => new InmuebleDTO { NombreInmueble = y.Nombre }).FirstOrDefault(); oTareaDTO.Responsables = context.Tarea.Where(x => x.IdTarea == Tarea.IdTarea).SingleOrDefault().Usuario.Select(x => new UsuarioDTO { IdUsuario = x.IdUsuario, Nombre = x.Nombre, Email = x.Email }).ToList(); oTareaDTO.Servicio = context.Servicio.Where(x => x.IdServicio == Tarea.IdServicio).Select(y => new ServicioDTO { NombreServicio = y.Nombre, NombreCorto = y.NombreCorto }).FirstOrDefault(); oTareaDTO.Estado = context.Estado.Where(x => x.IdEstado == Tarea.IdEstado).Select(y => new EstadoDTO { NombreEstado = y.NombreEstado }).FirstOrDefault(); SendMailResponsable(oTareaDTO, responsablesToRemove, responsablesToAdd); return Tarea.IdTarea; } catch (Exception e) { //throw e; return 0; } } }
public IList GetContadorEstados(TareaDTO oTareaDTO) { using (var context = getContext()) { var result = context.SP_CountEstados(oTareaDTO.FechaInicio, oTareaDTO.FechaFin, oTareaDTO.IdResponsable).Select(x => new { x.NombreEstado, x.CuentaEstado }).ToList(); return result; } }