/// <summary> /// Realiza la búsqueda de plantillas /// </summary> /// <param name="filtro">Filtro de búsqueda</param> /// <returns>Listado de plantillas</returns> public ProcessResult <List <PlantillaResponse> > BuscarPlantilla(PlantillaRequest filtro) { ProcessResult <List <PlantillaResponse> > resultado = new ProcessResult <List <PlantillaResponse> >(); List <CodigoValorResponse> resultadoTipoContrato = null; List <CodigoValorResponse> resultadoTipoDocumentoContrato = null; List <CodigoValorResponse> resultadoEstadoVigencia = null; try { resultadoTipoContrato = politicaService.ListarTipoContrato().Result; resultadoTipoDocumentoContrato = politicaService.ListarTipoDocumentoContrato().Result; resultadoEstadoVigencia = politicaService.ListarEstadoVigencia().Result; Guid?codigoPlantilla = filtro.CodigoPlantilla != null ? new Guid(filtro.CodigoPlantilla) : (Guid?)null; DateTime?fechaInicioVigencia = null; DateTime?fechaFinVigencia = null; if (!string.IsNullOrWhiteSpace(filtro.FechaInicioVigenciaString)) { fechaInicioVigencia = DateTime.ParseExact(filtro.FechaInicioVigenciaString, DatosConstantes.Formato.FormatoFecha, System.Globalization.CultureInfo.InvariantCulture); } else { fechaInicioVigencia = null; } if (!string.IsNullOrWhiteSpace(filtro.FechaFinVigenciaString)) { fechaFinVigencia = DateTime.ParseExact(filtro.FechaFinVigenciaString, DatosConstantes.Formato.FormatoFecha, System.Globalization.CultureInfo.InvariantCulture); } else { fechaFinVigencia = null; } List <PlantillaLogic> listado = plantillaLogicRepository.BuscarPlantilla(codigoPlantilla, filtro.Descripcion, filtro.CodigoTipoContrato, filtro.CodigoTipoDocumentoContrato, filtro.CodigoEstadoVigencia, filtro.IndicadorAdhesion, fechaInicioVigencia, fechaFinVigencia, filtro.NumeroPagina, filtro.RegistrosPagina); resultado.Result = new List <PlantillaResponse>(); foreach (var registro in listado) { var plantilla = PlantillaAdapter.ObtenerPlantillaPaginado(registro, resultadoTipoContrato, resultadoTipoDocumentoContrato, resultadoEstadoVigencia); resultado.Result.Add(plantilla); } } catch (Exception e) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <PlantillaService>(e); } return(resultado); }
/// <summary> /// Registra o actualiza una plantilla /// </summary> /// <param name="data">Datos a registrar</param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <object> RegistrarPlantilla(PlantillaRequest data) { ProcessResult <object> resultado = new ProcessResult <object>(); try { PlantillaEntity entidad = PlantillaAdapter.RegistrarPlantilla(data); DateTime fechaActual = DateTime.Now.Date; bool existeRepetido = false; if (!string.IsNullOrWhiteSpace(data.FechaInicioVigenciaString)) { var resultadoValidacion = plantillaLogicRepository.BuscarPlantillaTipo(data.CodigoTipoContrato, data.CodigoTipoDocumentoContrato, Convert.ToBoolean(data.IndicadorAdhesion)); existeRepetido = resultadoValidacion.Any(x => x.CodigoPlantilla != entidad.CodigoPlantilla && x.FechaInicioVigenciaDate == entidad.FechaInicioVigencia); if (existeRepetido) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <PlantillaService>(MensajesSistema.PlantillaExiste); } else { if (data.CodigoPlantilla == null && data.CodigoPlantillaCopiar == null) { entidad.CodigoEstadoVigencia = DatosConstantes.EstadoVigencia.Proximo; plantillaEntityRepository.Insertar(entidad, entornoActualAplicacion); } else if (data.CodigoPlantillaCopiar != null) { entidad.CodigoEstadoVigencia = DatosConstantes.EstadoVigencia.Proximo; plantillaEntityRepository.CopiarPlantilla(new Guid(data.CodigoPlantillaCopiar), data.Descripcion, data.CodigoTipoContrato, data.CodigoTipoDocumentoContrato, Convert.ToDateTime(data.FechaInicioVigenciaString), entornoActualAplicacion.UsuarioSession, entornoActualAplicacion.Terminal, data.EsMayorMenor); } else { //var contratosAsociadoPlantilla = listadoContratoLogicRepository.BuscarListadoContrato(null, null, entidad.CodigoPlantilla, null, // null, null, DatosConstantes.EstadoContrato.Edicion, // null, null, null, null, null, null, null, // DatosConstantes.CodigoEstadoEdicion.EdicionParcial,null, 1, -1).FirstOrDefault(); //if (contratosAsociadoPlantilla == null) //{ var entidadSincronizar = plantillaEntityRepository.GetById(entidad.CodigoPlantilla); entidadSincronizar.Descripcion = entidad.Descripcion; entidadSincronizar.CodigoTipoDocumentoContrato = entidad.CodigoTipoDocumentoContrato; entidadSincronizar.CodigoTipoContrato = entidad.CodigoTipoContrato; entidadSincronizar.IndicadorAdhesion = entidad.IndicadorAdhesion; entidadSincronizar.FechaInicioVigencia = entidad.FechaInicioVigencia; //INICIO: Agregado por Julio Carrera - Norma Contable entidadSincronizar.Es_MayorMenor = entidad.Es_MayorMenor; //FIN: Agregado por Julio Carrera - Norma Contable plantillaEntityRepository.Editar(entidadSincronizar, entornoActualAplicacion); //} //else //{ // resultado.IsSuccess = false; // resultado.Exception = new ApplicationLayerException<PlantillaService>(MensajesSistema.PlantillaNoModificar); //} } plantillaEntityRepository.GuardarCambios(); plantillaEntityRepository.ActualizarPlantillaEstadoVigencia(); resultado.Result = data; } } else { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <PlantillaService>(MensajesSistema.PlantillaFechaInicioVigenciIncorrecto); } } catch (Exception e) { LogBL.grabarLogError(new Exception("RegistrarPlantilla")); LogBL.grabarLogError(e.GetBaseException()); resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <PlantillaService>(e.GetBaseException().Message); } return(resultado); }