using Atesa.Utilitarios; using AYA.SlnSinortModel.Constantes; using AYA.SlnSinortModel.DAL.Sinort; using AYA.SlnSinortModel.Entidades; using AYA.SlnSinortModel.Sinort; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.DirectoryServices; using System.DirectoryServices.ActiveDirectory; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; ////using AYA.SlnSinort.WCF.ServiciosUsuariosWCF; namespace AYA.SlnSinort.WCF { public class Sinort : ISinort { Log log = new Log("SinortWCF"); #region ProyectoNormativo public ProyectoNormativoJSON GuardarProyectoNormativo(ProyectoNormativoJSON model) { try { if (model.ProyectoNormativo == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del proyecto normativo"; return model; } model = new ProyectoNormativoDAL().GuardarProyectoNormativo(model); } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public ProyectoNormativoJSON GuardarConvocatoriaProyectoNormativo(ProyectoNormativoJSON model) { try { var convocatoriaDAL = new ConvocatoriaDAL(); if (model.ListaConvocatoria == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos de los convocados"; return model; } foreach (var convocados in model.ListaConvocatoria) { model.Convocado = convocados; convocatoriaDAL.GuardarConvocatoriaProyectoNormativo(model); } model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public ProyectoNormativoJSON ObtenerProyectoNormativo(ProyectoNormativoJSON model) { try { if (model.ProyectoNormativo == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del proyecto normativo"; return model; } model = new ProyectoNormativoDAL().ObtenerProyectoNormativo(model); } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public ProyectoNormativoJSON GuardarComentarioProyectoNormativo(ProyectoNormativoJSON model) { try { if (model.ProyectoNormativo == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del proyecto normativo"; return model; } if (model.Comentario == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del nuevo comentario"; return model; } model = new ComentariosDAL().GuardarComentariosProyectoNormativo(model); } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public ProyectoNormativoJSON GuardarEventoProyectoNormativo(ProyectoNormativoJSON model) { try { if (model.ProyectoNormativo == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del proyecto normativo"; return model; } if (model.Evento == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del nuevo evento"; return model; } model = new CalendarioDAL().GuardarEvento(model); } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } //public ProyectoNormativoJSON EliminarConvocatoriaProyectoNormativo(ProyectoNormativoJSON model) //{ // try // { // if (model.ProyectoNormativo == null) // { // model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; // model.DescripcionRespuesta = "No se encontraron datos del proyecto normativo"; // return model; // } // if (model.Convocado == null) // { // model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; // model.DescripcionRespuesta = "No se encontraron datos del usuario"; // return model; // } // model = new ConvocatoriaDAL().EliminarConvocatoriaProyectoNormativo(model); // } // catch (Exception ex) // { // log.Error(ex); // model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; // } // return model; //} #endregion //Ficha tecnica # region Ficha Tecnica public FichaTecnicaJSON GuardarFichaTecnica(FichaTecnicaJSON model) { try { if (model.FichaTecnica == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos de la ficha técnica"; return model; } model = new FichaTecnicaDAL().GuardarFichaTecnica(model); } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public FichaTecnicaJSON GuardarFichaTecnicaPalabraClave(FichaTecnicaJSON model) { try { var fichaTecnicaPalabraClaveDAL = new FichaTecnicaPalabraClaveDAL(); if (model.ListaPalabraClave == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos de las palabras claves"; return model; } foreach (var palabrasClaves in model.ListaPalabraClave) { model.PalabraClave = palabrasClaves; fichaTecnicaPalabraClaveDAL.GuardarFichaTecnicaPalabraClave(model); } model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } #endregion #region WCFAYA Envio Correo public ProyectoNormativoJSON EnviarCorreo(ProyectoNormativoJSON model) { PlantillaEmailDAL PlantillalDAL = new PlantillaEmailDAL(); UsuarioDAL UsuarioDAL = new UsuarioDAL(); List Listaplantillas = new List(); PlantillaEmail plantilla = new PlantillaEmail(); Usuario usuario = new Usuario(); CatalogosPostJSON catalogo = new CatalogosPostJSON(); int respuesta = 0; string email; string body; try { //Obtener parametros ServiciosUsuariosWCF.ServicioUsuariosClient respuestaAyA = new ServiciosUsuariosWCF.ServicioUsuariosClient(); ServiciosUsuariosWCF.correoEL correo = new ServiciosUsuariosWCF.correoEL(); Listaplantillas = PlantillalDAL.ObtenerPlantillasEmail(); switch (model.PlantillaEmail.NombrePlatilla) { case "Correo Proyecto Normativo": //Correo Analista plantilla = Listaplantillas.Where(p => p.NombrePlatilla == "Correo Analista").FirstOrDefault(); catalogo.codigo = model.ProyectoNormativo.PromotorProyecto; usuario = UsuarioDAL.BuscarUsuario(catalogo); correo.FORMATO = "html"; correo.ASUNTO = plantilla.Subject.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo); body = plantilla.Body.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo).Replace("$Usuario", usuario.NombreUsuario).Replace("|", "
"); email = usuario.EmailUsuario; correo.DESTINATARIOS = "jnunez@atesacr.com"; correo.CUERPO = body; respuesta = respuestaAyA.enviarCorreo(correo); //Correo Convocados plantilla = Listaplantillas.Where(p => p.NombrePlatilla == "Correo Convocados").FirstOrDefault(); correo = new ServiciosUsuariosWCF.correoEL(); correo.FORMATO = "html"; correo.ASUNTO = plantilla.Subject.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo); foreach (var participantes in model.ListaConvocatoria) { catalogo.codigo = participantes.UsuarioSistema; usuario = UsuarioDAL.BuscarUsuario(catalogo); body = plantilla.Body.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo).Replace("$FechaMaxima", Convert.ToString(model.ProyectoNormativo.FechaMaximaConfirmarParticipacion)).Replace("$Usuario", usuario.NombreUsuario).Replace("|", "
"); correo.CUERPO = body; email = usuario.EmailUsuario; correo.DESTINATARIOS = "jnunez@atesacr.com"; respuesta = respuestaAyA.enviarCorreo(correo); } break; case "Correo Convocados": plantilla = Listaplantillas.Where(p => p.NombrePlatilla == model.PlantillaEmail.NombrePlatilla).FirstOrDefault(); correo = new ServiciosUsuariosWCF.correoEL(); correo.FORMATO = "html"; correo.ASUNTO = plantilla.Subject.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo); foreach (var participantes in model.ListaConvocatoria) { catalogo.codigo = participantes.UsuarioSistema; usuario = UsuarioDAL.BuscarUsuario(catalogo); body = plantilla.Body.Replace("$NombreProyecto", model.ProyectoNormativo.NombreProyectoNormativo).Replace("$FechaMaxima", Convert.ToString(model.ProyectoNormativo.FechaMaximaConfirmarParticipacion)).Replace("$Usuario", usuario.NombreUsuario).Replace("|", "
"); correo.CUERPO = body; email = usuario.EmailUsuario; correo.DESTINATARIOS = "jnunez@atesacr.com"; respuesta = respuestaAyA.enviarCorreo(correo); } break; case "Correo Analista Confirmada" : plantilla = Listaplantillas.Where(p => p.NombrePlatilla == model.PlantillaEmail.NombrePlatilla).FirstOrDefault(); correo = new ServiciosUsuariosWCF.correoEL(); correo.FORMATO = "html"; foreach (var tareas in model.ListaTareasPendientes) { catalogo.codigo = tareas.UsuarioAsignado; usuario = UsuarioDAL.BuscarUsuario(catalogo); correo.ASUNTO = plantilla.Subject.Replace("$NombreProyecto", tareas.NombreProyectoNormativo).Replace("$Usuario", usuario.NombreUsuario); body = plantilla.Body.Replace("$Usuario", usuario.NombreUsuario).Replace("|", "
"); catalogo.codigo = tareas.PromotorProyectoNormativo; usuario = UsuarioDAL.BuscarUsuario(catalogo); email = usuario.EmailUsuario; correo.DESTINATARIOS = "jnunez@atesacr.com"; correo.CUERPO = body; respuesta = respuestaAyA.enviarCorreo(correo); } break; case "Correo Analista No Confirmada": plantilla = Listaplantillas.Where(p => p.NombrePlatilla == model.PlantillaEmail.NombrePlatilla).FirstOrDefault(); correo = new ServiciosUsuariosWCF.correoEL(); correo.FORMATO = "html"; foreach (var tareas in model.ListaTareasPendientes) { catalogo.codigo = tareas.UsuarioAsignado; usuario = UsuarioDAL.BuscarUsuario(catalogo); correo.ASUNTO = plantilla.Subject.Replace("$NombreProyecto", tareas.NombreProyectoNormativo).Replace("$Usuario", usuario.NombreUsuario); body = plantilla.Body.Replace("$Usuario", usuario.NombreUsuario).Replace("$Justificacion", model.Convocado.Justificacion).Replace("|", "
"); catalogo.codigo = tareas.PromotorProyectoNormativo; usuario = UsuarioDAL.BuscarUsuario(catalogo); email = usuario.EmailUsuario; correo.DESTINATARIOS = "jnunez@atesacr.com"; correo.CUERPO = body; respuesta = respuestaAyA.enviarCorreo(correo); } break; } } catch (Exception ex) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; throw; } model.CodigoRespuesta = (respuesta == 1) ? EnumTipoCodigoRespuesta.EXITOSO : EnumTipoCodigoRespuesta.ERROR; ; return model; } #endregion #region Adjuntos public AdjuntosJSON GuardarAdjuntos(AdjuntosJSON model) { try { var documentosDAL = new DocumentosAdjuntosDAL(); if (model.Adjuntos == null) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; model.DescripcionRespuesta = "No se encontraron datos del documento "; return model; } documentosDAL.GuardarAdjuntos(model); model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public AdjuntosJSON RemoverAdjunto(AdjuntosJSON model) { string Serverpath = HttpContext.Current.Server.MapPath("DocumentosSINORT"); Serverpath += "\\" + model.Carpeta; try { string file; string fileDirectory = Serverpath; file = model.Nombre.Replace(" ", "_"); fileDirectory = fileDirectory + "\\" + file; if (File.Exists(fileDirectory)) { File.Delete(fileDirectory); } model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } catch (Exception ex) { log.Error(ex); model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; } return model; } public List ObtenerAdjuntos(AdjuntosJSON model) { List respuesta = null; try { respuesta = new DocumentosAdjuntosDAL().ObtenerAdjuntos(model); } catch (Exception ex) { log.Error(ex); } return respuesta; } #endregion #region Tareas Pendientes public List ObtenerTareasPendientes(CatalogosPostJSON model) { List respuesta = null; try { respuesta = new TareasPendientesDAL().ObtenerTareasPendientes(model); } catch (Exception ex) { log.Error(ex); } return respuesta; } public ProyectoNormativoJSON InsertarActualizarTareasPendientes(ProyectoNormativoJSON model) { try { var tareasDAL = new TareasPendientesDAL(); foreach (var tareas in model.ListaTareasPendientes) { model.TareasPendientes = tareas; tareasDAL.InsertarActualizarTareasPendientes(model); } model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } catch (Exception ex) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; log.Error(ex); } return model; } public NotificacionesJSON ObtenerCantidadTareasPendientes(NotificacionesJSON model) { try { model = new TareasPendientesDAL().ObtenerCantidadTareasPendientes(model); } catch (Exception ex) { log.Error(ex); } return model; } #endregion #region Login public LoginJSON ObtenerUsuarioAD(LoginJSON model) { string servidorActiveDirectory = "intranet.aya.go.cr"; string domain = servidorActiveDirectory; try { DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain, model.Usuario, model.Contrasena); object nativeObject = entry.NativeObject; DirectorySearcher Buscar = new DirectorySearcher(entry); Buscar.Filter = "(SAMAccountName=" + model.Usuario + ")"; Buscar.PropertiesToLoad.Add("mail"); Buscar.PropertiesToLoad.Add("displayname"); Buscar.PropertiesToLoad.Add("samaccountname"); var Resultado = Buscar.FindOne(); if (Resultado != null) { model.NombreUsuario = Resultado.Properties["displayname"][0].ToString(); model.LoginUsuario = Resultado.Properties["samaccountname"][0].ToString(); model.DescripcionRespuesta = "Bienvenido."; model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } } catch (Exception ex) { model.DescripcionRespuesta = "El usuario o la contraseña son incorrectos."; model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; log.Error(ex); } return model; }//Fin de método public CatalogosPostJSON VerificarUsuarioBD(CatalogosPostJSON model) { UsuarioDAL usuario = new UsuarioDAL(); try { model.usuario = usuario.BuscarUsuario(model); if (model.usuario != null) { model.DescripcionRespuesta = "Bienvenido."; model.CodigoRespuesta = EnumTipoCodigoRespuesta.EXITOSO; } else { model.DescripcionRespuesta = "El usuario no está registrado."; model.CodigoRespuesta = EnumTipoCodigoRespuesta.ADVERTENCIA; } } catch (Exception ex) { model.CodigoRespuesta = EnumTipoCodigoRespuesta.ERROR; log.Error(ex); } return model; } public List ObtenerPermisos(AtesaJSON model) { List respuesta = null; try { respuesta = new PermisosUsuarioDAL().ObtenerPermisos(model); } catch (Exception ex) { log.Error(ex); } return respuesta; } #endregion } }