private string buscarAsuntoCorreo(tipoDeCargaArchivo _tipoArchivo) { string asunto = ""; if (_tipoArchivo == tipoDeCargaArchivo.ContratosDeCooperacion || _tipoArchivo == tipoDeCargaArchivo.ContratosDeCooperacionFirmados) { asunto = "Contrato de Cooperación e Instructivos"; } if (_tipoArchivo == tipoDeCargaArchivo.ActasDeLiquidacion) { asunto = "Acta de Liquidación del Contrato"; } if (_tipoArchivo == tipoDeCargaArchivo.ProrrogasDeContratos) { asunto = "Prorroga Contrato de Cooperación"; } if (_tipoArchivo == tipoDeCargaArchivo.ActasDeTerminacion) { asunto = "Acta de Terminación del Contrato"; } return(asunto); }
public List <CargueMasivoMessage> cargarArchivo(tipoDeCargaArchivo _tipoArchivo , int _idUsuario, FileUpload fileUpload , string _correoEnvia , ref string mensajeError) { List <CargueMasivoMessage> listCarga = new List <CargueMasivoMessage>(); try { string BaseFile = _tipoArchivo + "_" + _idUsuario + "_" + string.Format("{0:00}", DateTime.Now.Day) + string.Format("{0:00}", DateTime.Now.Month) + DateTime.Now.Year + "_" + string.Format("{0:00}", DateTime.Now.Hour) + string.Format("{0:00}", DateTime.Now.Minute) + ".zip"; string BaseDirectory = ConfigurationManager.AppSettings.Get("RutaIP") + ConfigurationManager.AppSettings.Get("DirVirtual") + _tipoArchivo + "\\"; string FullBaseFilDirectory = BaseDirectory + BaseFile; string OutPutDirectory = ConfigurationManager.AppSettings.Get("RutaIP") + ConfigurationManager.AppSettings.Get("DirVirtual") + "Proyecto\\"; string rutaArchivo = FullBaseFilDirectory; if (!fileUpload.HasFile) { throw new ApplicationException("Archivo invalido"); } if (!fileUpload.FileName.Contains(".zip")) { throw new ApplicationException("Debe ser un archivo con extensión .zip"); } if (!(fileUpload.PostedFile.ContentLength < 1048576000)) { throw new ApplicationException("El archivo es muy pesado, maximo 100 megas."); } cargarZip(fileUpload, rutaArchivo, BaseDirectory); listCarga = descomprimirZip(rutaArchivo, OutPutDirectory, _idUsuario , _tipoArchivo, _correoEnvia); mensajeError = "OK"; } catch (ApplicationException ex) { mensajeError = "Advertencia, detalle : " + ex.Message; } catch (Exception ex) { mensajeError = ex.Message; } return(listCarga); }
private List <CargueMasivoMessage> descomprimirZip(string fullBaseFileDirectory , string OutPutDirectory, int _codUsuario , tipoDeCargaArchivo _tipoArchivo, string _correoEnvia) { List <CargueMasivoMessage> messages = new List <CargueMasivoMessage>(); using (ZipFile zip = ZipFile.Read(fullBaseFileDirectory)) { foreach (ZipEntry zipFile in zip) { try { string mensajeError = ""; if (!IsValidFile(zipFile.FileName, ref mensajeError)) { throw new ApplicationException(mensajeError); } var codigoProyecto = GetCodigoProyecto(zipFile.FileName); if (!ProyectoExist(codigoProyecto, ref mensajeError)) { throw new ApplicationException(mensajeError); } //Validar Operador si es administrador no se valida if (OperadorXContacto(_codUsuario).IdOperador != 0) { if (OperadorXContacto(_codUsuario).IdOperador != OperadorXProyecto(codigoProyecto).IdOperador) { throw new ApplicationException("El operador no es el mismo del proyecto"); } } var customOutPutDirectory = OutPutDirectory + "Proyecto_" + codigoProyecto + "\\"; if (!Directory.Exists(customOutPutDirectory)) { Directory.CreateDirectory(customOutPutDirectory); } if (File.Exists(customOutPutDirectory + zipFile.FileName)) { throw new ApplicationException("Existe un archivo con el mismo nombre, renombrelo para poder subirlo."); } //Se coloca el archivo en la carpeta del proyecto zipFile.Extract(customOutPutDirectory, ExtractExistingFileAction.OverwriteSilently); InsertRegistroDB(codigoProyecto, zipFile.FileName, _codUsuario, _tipoArchivo); //si es diferente a otrosdocumentos se requiere notificacion por correo if (tipoDeCargaArchivo.OtrosDocumentos != _tipoArchivo) { //Traer usuarios para enviar correos var usuariosEnviarCorreo = correosNotificacionBLL.enviarCorreoContactosDTO(codigoProyecto); var emprendedores = usuariosEnviarCorreo.Where(x => x.GrupoContacto == "Emprendedor") .Select(x => x).ToList(); bool correosEnviados = false; //Recorrer emprendedores foreach (var emp in emprendedores) { //traer Mensaje del correo string MensajeCorreo = buscarMensajeCorreo(_tipoArchivo, codigoProyecto , emp.Nombres, _correoEnvia); string asunto = buscarAsuntoCorreo(_tipoArchivo); //Enviar Correo a Emprendedor correosEnviados = EnviarCorreo(codigoProyecto, _codUsuario, emp.codContacto, emp.Nombres , emp.Email, asunto, MensajeCorreo, ref mensajeError); if (!correosEnviados) { //ingresar notificacion de NO envio messages.Add(new CargueMasivoMessage { Archivo = zipFile.FileName, CodigoProyecto = null, Message = "Advertencia : " + mensajeError, Error = ErrorType.Warning }); } if (tipoDeCargaArchivo.ContratosDeCooperacionFirmados != _tipoArchivo) { //Enviar Correos Asesores //Asesores var asesores = usuariosEnviarCorreo.Where(x => x.GrupoContacto == "Asesor") .Select(x => x).ToList(); var mensajesRespuestaAsesores = EnviarCorreoOtrosPerfiles(asesores, codigoProyecto, _codUsuario, emp.codContacto, emp.Nombres , asunto, MensajeCorreo, zipFile.FileName, ref mensajeError); messages.AddRange(mensajesRespuestaAsesores); //Enviar Correos Interventores //Interventores var interventores = usuariosEnviarCorreo.Where(x => x.GrupoContacto == "Interventor") .Select(x => x).ToList(); var mensajesRespuestaInterventores = EnviarCorreoOtrosPerfiles(interventores, codigoProyecto, _codUsuario, emp.codContacto, emp.Nombres , asunto, MensajeCorreo, zipFile.FileName, ref mensajeError); messages.AddRange(mensajesRespuestaInterventores); } } if (correosEnviados) { //Si se realizó todo correctamente messages.Add(new CargueMasivoMessage { Archivo = zipFile.FileName, CodigoProyecto = codigoProyecto, Message = "Cargado exitosamente.", Url = ConfigurationManager.AppSettings.Get("RutaWebSite") + "Documentos/Proyecto/Proyecto_" + codigoProyecto + "/" + zipFile.FileName, Error = ErrorType.success }); } } else //Otros Documentos { //Si se realizó todo correctamente messages.Add(new CargueMasivoMessage { Archivo = zipFile.FileName, CodigoProyecto = codigoProyecto, Message = "Cargado exitosamente.", Url = ConfigurationManager.AppSettings.Get("RutaWebSite") + "Documentos/Proyecto/Proyecto_" + codigoProyecto + "/" + zipFile.FileName, Error = ErrorType.success }); } } catch (ApplicationException ex) { messages.Add(new CargueMasivoMessage { Archivo = zipFile.FileName, CodigoProyecto = null, Message = "Advertencia : " + ex.Message, Error = ErrorType.Warning }); } catch (Exception ex) { messages.Add(new CargueMasivoMessage { Archivo = zipFile.FileName, CodigoProyecto = null, Message = "Advertencia : " + ex.Message, Error = ErrorType.Error }); } } } return(messages); }
private void InsertRegistroDB(int codigoProyecto, string fileName, int _codUsuario, tipoDeCargaArchivo _tipoArchivo) { using (FonadeDBLightDataContext db = new FonadeDBLightDataContext(conexion)) { var archivo = new ArchivosAdicionalesContrato { CodContacto = _codUsuario, CodProyecto = codigoProyecto, FechaIngreso = DateTime.Now, NombreArchivo = fileName, NombreContacto = nombreContacto(_codUsuario), ruta = "Documentos/Proyecto/Proyecto_" + codigoProyecto + "/" + fileName, TipoArchivo = _tipoArchivo.ToString(), Eliminado = false }; db.ArchivosAdicionalesContrato.InsertOnSubmit(archivo); db.SubmitChanges(); } //using (Datos.FonadeDBDataContext db = new Datos.FonadeDBDataContext(conexion)) //{ // var archivoContrato = new ContratosArchivosAnexo // { // CodProyecto = codigoProyecto, // NombreArchivo = fileName, // ruta = "Documentos/Proyecto/Proyecto_" + codigoProyecto + "/" + fileName, // CodContacto = _codUsuario, // FechaIngreso = DateTime.Now // }; // db.ContratosArchivosAnexos.InsertOnSubmit(archivoContrato); // db.SubmitChanges(); //} }
private string buscarMensajeCorreo(tipoDeCargaArchivo _tipoArchivo, int _codProyecto, string _nombreRecibe , string _correoEnvia) { string mensaje = ""; var operador = OperadorXProyecto(_codProyecto); string numeroContrato = buscarContratoEmpresa(_codProyecto); if (_tipoArchivo == tipoDeCargaArchivo.ContratosDeCooperacionFirmados) { mensaje = "Emprendedor(a) " + Environment.NewLine + _nombreRecibe + Environment.NewLine + Environment.NewLine + "Asunto: Contrato de Cooperación e Instructivos " + Environment.NewLine + Environment.NewLine + "Se informa que el contrato de cooperacion del proyecto ya se encuentra " + "cargado y firmado en la pestaña contrato, seccion archivos."; } if (_tipoArchivo == tipoDeCargaArchivo.ContratosDeCooperacion) { mensaje = "Emprendedor(a) " + Environment.NewLine + _nombreRecibe + Environment.NewLine + Environment.NewLine + "Asunto: Contrato de Cooperación e Instructivos " + Environment.NewLine + Environment.NewLine + "Se informa que el contrato de cooperación No " + numeroContrato + " " + "se encuentra cargada en la plataforma Fondo Emprender " + "con el fin de que sea firmada digitalmente, " + "y posteriormente enviada a " + operador.NombreOperador + " " + "a la dirección " + _correoEnvia + ". " + "con el fin de surtir el trámite interno pertinente."; } if (_tipoArchivo == tipoDeCargaArchivo.ActasDeLiquidacion) { mensaje = "Emprendedor(a) " + Environment.NewLine + _nombreRecibe + Environment.NewLine + Environment.NewLine + "Asunto: Acta de Liquidación del Contrato " + numeroContrato + Environment.NewLine + Environment.NewLine + "Se informa que acta liquidación del contrato de cooperación No " + numeroContrato + " " + "se encuentra cargada en la plataforma de fondo Emprender " + "en la pestaña de contrato, con el fin de que sea firmada " + "y posteriormente enviada a " + operador.NombreOperador + " a la " + "dirección " + _correoEnvia + ". " + "Esta debe ser recibida y diligenciada virtualmente lo más pronto posible, " + "con el fin de surtir el trámite interno pertinente."; } if (_tipoArchivo == tipoDeCargaArchivo.ProrrogasDeContratos) { mensaje = "Emprendedor(a) " + Environment.NewLine + _nombreRecibe + Environment.NewLine + Environment.NewLine + "Asunto: Prorroga Contrato de Cooperación" + Environment.NewLine + Environment.NewLine + "Se informa que la prórroga al contrato de cooperación No " + numeroContrato + " " + "la cual se encuentra cargada en la plataforma Fondo Emprender " + "con el fin de que sea firmada, y posteriormente " + "enviada a " + operador.NombreOperador + " a " + "la dirección " + _correoEnvia + ", con el fin de surtir el trámite interno pertinente."; } if (_tipoArchivo == tipoDeCargaArchivo.ActasDeTerminacion) { mensaje = "Emprendedor(a) " + Environment.NewLine + _nombreRecibe + Environment.NewLine + Environment.NewLine + "Asunto: Acta de Terminación del Contrato " + numeroContrato + Environment.NewLine + Environment.NewLine + "Se informa que acta Terminación del contrato de cooperación No " + numeroContrato + " " + "se encuentra cargada en la plataforma de fondo Emprender en la pestaña de contrato, " + "con el fin de que sea firmada y posteriormente enviada a " + operador.NombreOperador + " " + "a la dirección " + _correoEnvia + ". " + "Esta debe ser recibida y diligenciada virtualmente lo más pronto posible, " + "con el fin de surtir el trámite interno pertinente. "; } return(mensaje); }