/// <summary> /// Registra / Edita Flujo Aprobacion /// </summary> /// <param name="data"></param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <FlujoAprobacionRequest> RegistrarFlujoAprobacion(FlujoAprobacionRequest data) { ProcessResult <FlujoAprobacionRequest> resultado = new ProcessResult <FlujoAprobacionRequest>(); try { FlujoAprobacionEntity entidad = FlujoAprobacionAdapter.RegistrarFlujoAprobacion(data); //var resultadoRepetido = flujoAprobacionLogicRepository.RepiteFlujoAprobacion( // new Guid(data.CodigoUnidadOperativa), // data.CodigoFormaEdicion, // data.CodigoTipoServicio, // data.CodigoTipoRequerimiento //); bool existeRepetido = false; //resultadoRepetido.Any(e => e.CodigoFlujoAprobacion != entidad.CodigoFlujoAprobacion); if (existeRepetido) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(MensajesSistema.FlujoAprobacionExiste); } else { if (data.CodigoFlujoAprobacion == null) { flujoAprobacionEntityRepository.Insertar(entidad); flujoAprobacionEntityRepository.GuardarCambios(); foreach (var item in data.ListaTipoServicio) { //FlujoAprobacionTipoServicioEntity entidadFlujoAprobacionTipoServicio = new FlujoAprobacionTipoServicioEntity(); //entidadFlujoAprobacionTipoServicio.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion; //entidadFlujoAprobacionTipoServicio.CodigoFlujoAprobacionTipoServicio = Guid.NewGuid(); //entidadFlujoAprobacionTipoServicio.CodigoTipoServicio = item; //flujoAprobacionTipoServicioEntityRepository.Insertar(entidadFlujoAprobacionTipoServicio); //flujoAprobacionTipoServicioEntityRepository.GuardarCambios(); FlujoAprobacionTipoContratoEntity entidadFlujoAprobacionTipoContrato = new FlujoAprobacionTipoContratoEntity(); entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion; entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacionTipoContrato = Guid.NewGuid(); entidadFlujoAprobacionTipoContrato.CodigoTipoContrato = item; flujoAprobacionTipoContratoEntityRepository.Insertar(entidadFlujoAprobacionTipoContrato); flujoAprobacionTipoContratoEntityRepository.GuardarCambios(); } var datosDefecto = new FlujoAprobacionEstadioEntity() { CodigoFlujoAprobacionEstadio = Guid.NewGuid(), CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion, Orden = 1, Descripcion = "Edición", TiempoAtencion = 1, HorasAtencion = 0, IndicadorVersionOficial = false, IndicadorPermiteCarga = false, IndicadorNumeroContrato = false, EstadoRegistro = "1" }; flujoAprobacionEstadioEntityRepository.Insertar(datosDefecto); //flujoAprobacionEstadioEntityRepository.GuardarCambios(); } else { var entidadSincronizar = flujoAprobacionEntityRepository.GetById(entidad.CodigoFlujoAprobacion); entidadSincronizar.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion; entidadSincronizar.CodigoUnidadOperativa = entidad.CodigoUnidadOperativa; entidadSincronizar.CodigoPrimerFirmante = entidad.CodigoPrimerFirmante; entidadSincronizar.CodigoPrimerFirmanteOriginal = entidad.CodigoPrimerFirmante; if (entidad.CodigoSegundoFirmante != null) { entidadSincronizar.CodigoSegundoFirmante = entidad.CodigoSegundoFirmante; entidadSincronizar.CodigoSegundoFirmanteOriginal = entidad.CodigoSegundoFirmante; } entidadSincronizar.CodigoPrimerFirmanteVinculada = entidad.CodigoPrimerFirmanteVinculada; entidadSincronizar.CodigoSegundoFirmanteVinculada = entidad.CodigoSegundoFirmanteVinculada; //Detalle Flujo Aprobación Tipo de Contrato List <FlujoAprobacionTipoContratoLogic> listadoFlujoAprobacionTipoContrato = flujoAprobacionLogicRepository.BuscarFlujoAprobacionTipoContrato( null, entidad.CodigoFlujoAprobacion, null, null ); //Eliminar los tipos de contrato foreach (var item in listadoFlujoAprobacionTipoContrato.Where(item => item.EstadoRegistro == DatosConstantes.EstadoRegistro.Activo).ToList()) { flujoAprobacionTipoContratoEntityRepository.Eliminar(item.CodigoFlujoAprobacionTipoContrato); flujoAprobacionTipoContratoEntityRepository.GuardarCambios(); } //Editar o registrar tipos de contrato foreach (var item in data.ListaTipoServicio) { FlujoAprobacionTipoContratoEntity entidadFlujoAprobacionTipoContrato = new FlujoAprobacionTipoContratoEntity(); var flujoAprobacionTipoContratoEditar = listadoFlujoAprobacionTipoContrato.Where(itemWhere => itemWhere.CodigoTipoContrato == item).FirstOrDefault(); if (flujoAprobacionTipoContratoEditar != null) { entidadFlujoAprobacionTipoContrato = flujoAprobacionTipoContratoEntityRepository.GetById(flujoAprobacionTipoContratoEditar.CodigoFlujoAprobacionTipoContrato); entidadFlujoAprobacionTipoContrato.EstadoRegistro = DatosConstantes.EstadoRegistro.Activo; flujoAprobacionTipoContratoEntityRepository.Editar(entidadFlujoAprobacionTipoContrato); } else { entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion; entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacionTipoContrato = Guid.NewGuid(); entidadFlujoAprobacionTipoContrato.CodigoTipoContrato = item; flujoAprobacionTipoContratoEntityRepository.Insertar(entidadFlujoAprobacionTipoContrato); } flujoAprobacionTipoServicioEntityRepository.GuardarCambios(); } entidadSincronizar.IndicadorAplicaMontoMinimo = entidad.IndicadorAplicaMontoMinimo; entidadSincronizar.EstadoRegistro = entidad.EstadoRegistro; flujoAprobacionEntityRepository.Editar(entidadSincronizar); } flujoAprobacionEstadioEntityRepository.GuardarCambios(); } resultado.Result = data; } catch (Exception e) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(e); } return(resultado); }
/// <summary> /// Busca Bandeja Flujo Aprobacion /// </summary> /// <param name="filtro">Filtro de Flujo de Aprobación</param> /// <returns>Registros de flujo aprobacion</returns> public ProcessResult <List <FlujoAprobacionResponse> > BuscarBandejaFlujoAprobacion(FlujoAprobacionRequest filtro) { ProcessResult <List <FlujoAprobacionResponse> > resultado = new ProcessResult <List <FlujoAprobacionResponse> >(); List <UnidadOperativaResponse> unidadOperativa = null; List <CodigoValorResponse> tipoContrato = null; List <CodigoValorResponse> formaContrato = null; var listaTrabajador = trabajadorService.BuscarTrabajador(new TrabajadorRequest()).Result; if (filtro.IndicadorObtenerDescripcion) { unidadOperativa = unidadOperativaService.BuscarUnidadOperativa(new FiltroUnidadOperativa() { Nivel = "03" }).Result; tipoContrato = politicaService.ListarTipoContrato().Result.OrderBy(item => item.Valor.ToString()).ToList(); formaContrato = politicaService.ListarFormaContrato().Result; } try { Guid?CodigoFlujoAprobacion = (filtro.CodigoFlujoAprobacion != null && filtro.CodigoFlujoAprobacion != "") ? new Guid(filtro.CodigoFlujoAprobacion) : (Guid?)null; Guid?CodigoUnidadOperativa = (filtro.CodigoUnidadOperativa != null && filtro.CodigoUnidadOperativa != "") ? new Guid(filtro.CodigoUnidadOperativa) : (Guid?)null; List <FlujoAprobacionLogic> listado = flujoAprobacionLogicRepository.BuscarBandejaFlujoAprobacion( CodigoFlujoAprobacion, CodigoUnidadOperativa, filtro.IndicadorAplicaMontoMinimo, filtro.EstadoRegistro ); resultado.Result = new List <FlujoAprobacionResponse>(); //Detalle Flujo Aprobación Tipo de Contrato List <FlujoAprobacionTipoContratoLogic> listadoFlujoAprobacionTipoServicio = flujoAprobacionLogicRepository.BuscarFlujoAprobacionTipoContrato( null, null, null,//filtro.ListaTipoServicio == null ? null : filtro.ListaTipoServicio.Count == 1 ? filtro.ListaTipoServicio[0] : null, filtro.EstadoRegistro ); foreach (var registro in listado) { var objlistadoFlujoAprobacionTipoServicio = listadoFlujoAprobacionTipoServicio.FindAll(p => p.CodigoFlujoAprobacion == registro.CodigoFlujoAprobacion); if (filtro.ListaTipoServicio != null) { if (!filtro.ListaTipoServicio.Any(itemAny => objlistadoFlujoAprobacionTipoServicio.Any(itemWhere => itemWhere.CodigoTipoContrato == itemAny))) { continue; } } var flujoAprobacion = FlujoAprobacionAdapter.ObtenerFlujoAprobacion(registro, objlistadoFlujoAprobacionTipoServicio, unidadOperativa, tipoContrato); var primerFirmante = listaTrabajador.Find(p => p.CodigoTrabajador == registro.CodigoPrimerFirmante.Value.ToString()); if (primerFirmante != null) { flujoAprobacion.NombrePrimerFirmante = primerFirmante.NombreCompleto; } if (registro.CodigoSegundoFirmante != null) { var segundoFirmante = listaTrabajador.Find(p => p.CodigoTrabajador == registro.CodigoSegundoFirmante.Value.ToString()); if (segundoFirmante != null) { flujoAprobacion.NombreSegundoFirmante = segundoFirmante.NombreCompleto; } } resultado.Result.Add(flujoAprobacion); } resultado.Result = (from item in resultado.Result orderby item.DescripcionUnidadOperativa, item.IndicadorAplicaMontoMinimo, item.DescripcionTipoContrato ascending select item).ToList(); } catch (Exception e) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(e); } return(resultado); }