public int GrabarDocumento(string idEstudio, string idDocumento, string descripion, string idTipoDocumento, string limitante, Usuario usuarioLogin, bool verificarVersion, string idVersion, string versionDescripion, string versionFecha, string versionAprobadoANMAT, string versionFechaAprobadoANMAT, string versionFechaEstado, string versionIdEstado, string participantes, string requiereAlertaInactividad, string mesesAlertaInactividad, string requiereAlertaInformeAvance, string mesesAlertaInformeAvance) { //ServiciosHelpers.ValidarClave(estudio); Documento documento = null; int _idDocumento = idDocumento.ConvertirInt(); if (_idDocumento != -1) { documento = repository.Obtener(_idDocumento); } if (documento == null) { documento = new Documento(); } documento.Descripcion = string.IsNullOrEmpty(descripion) ? string.Empty : descripion; documento.TipoDocumento = this.TipoDocumentoObtener(idTipoDocumento.ConvertirInt()); documento.Limitante = limitante.ConvertirBool(); documento.Vigente = true; documento.IdEstudio = idEstudio.ConvertirInt(); documento.Validar(); if (verificarVersion) { this.ActualizarDocumentoVersion(documento, idVersion, versionDescripion, versionFecha, versionAprobadoANMAT, versionFechaAprobadoANMAT, versionFechaEstado, versionIdEstado, participantes, usuarioLogin); } else if (documento.TipoDocumento != null && !documento.TipoDocumento.RequiereVersion && documento.Versiones.Count == 0) { ServicioParametricas servParametricas = new ServicioParametricas(); DocumentoVersion version = new DocumentoVersion(); version.Fecha = null; version.Descripcion = string.Empty; Parametro parmsEstado = servParametricas.ObtenerObjeto <Parametro>("Descripcion", "ESTADO_DOC_INGRESADO"); string idEstado = (parmsEstado != null) ? parmsEstado.Valor : null; DocumentoVersionEstado versionEstado = this.CrearDocumentoVersionEstado(documento.TipoDocumento, idEstado, DateTime.Now.ToString(), usuarioLogin); version.AgregarVersionEstado(versionEstado); this.AgregarParticipantes(participantes, documento, version); documento.AgregarVersion(version); } return(this.Grabar(documento)); }
public void GrabarDocumentoVersionEstado(DocumentoVersion version, EstadoDocumento estado, bool actualizarEstadoFinal, Usuario usuarioLogin) { if (estado == null && !actualizarEstadoFinal) { return; } ServicioParametricas servParametricas = new ServicioParametricas(); DocumentoVersionEstado versionEstadoActual = version.ObtenerVersionEstado(); if (versionEstadoActual != null && versionEstadoActual.Estado != null) { //para no duplicar el estado, si ya lo tiene no hce nada if (versionEstadoActual.Estado == estado) { return; } //si ya tiene un estado final y no se está actualizando estado final, se quita primero para que quede un solo estado final if (versionEstadoActual.EstadoFinal.HasValue && versionEstadoActual.EstadoFinal.Value) { if (actualizarEstadoFinal) { return; } else { version.EliminarVersionEstado(versionEstadoActual.Id); } } } EstadoDocumento estadoAprobadoExistente = null; EstadoDocumento estadoTomaConocimientoExistente = null; EstadoDocumento nuevoEstado = null; if (actualizarEstadoFinal) { List <EstadoDocumento> listEstados = version.Documento.TipoDocumento.ObtenerFlujoDefault().ObtenerEstados(versionEstadoActual.Estado); Parametro parmsEstado = servParametricas.ObtenerObjeto <Parametro>("Descripcion", "ESTADO_DOC_APROBADO"); string idEstadoAprobado = (parmsEstado != null) ? parmsEstado.Valor : null; estadoAprobadoExistente = listEstados.Find(delegate(EstadoDocumento match) { return(match.Id == idEstadoAprobado.ConvertirInt()); }); parmsEstado = servParametricas.ObtenerObjeto <Parametro>("Descripcion", "ESTADO_DOC_TOMA_CONOCIMIENTO"); string idEstadoTomaConocimiento = (parmsEstado != null) ? parmsEstado.Valor : null; estadoTomaConocimientoExistente = listEstados.Find(delegate(EstadoDocumento match) { return(match.Id == idEstadoTomaConocimiento.ConvertirInt()); }); if (estadoAprobadoExistente == null && estadoTomaConocimientoExistente == null) { return; } nuevoEstado = (estadoAprobadoExistente != null) ? estadoAprobadoExistente : estadoTomaConocimientoExistente; } else { nuevoEstado = estado; } DocumentoVersionEstado versionEstado = new DocumentoVersionEstado(); versionEstado.Fecha = DateTime.Now; versionEstado.Estado = nuevoEstado; versionEstado.Usuario = usuarioLogin; versionEstado.Observaciones = string.Empty; TipoDocumentoFlujoEstado flujoEstado = version.Documento.TipoDocumento.ObtenerFlujoDefault().ObtenerFlujoEstado(nuevoEstado); if (flujoEstado != null) { versionEstado.EstadoFinal = flujoEstado.Final; } else { versionEstado.EstadoFinal = false; } versionEstado.Validar(); version.AgregarVersionEstado(versionEstado); }
public void GrabarDocumentoVersionEstado(string idEstudio, string idDocumento, string idVersion, string idVersionEstado, string idEstado, string fecha, string idProfesionalAutor, string idProfesionalPresenta, string idProfesionalResponsable, Usuario usuarioLogin) { ServicioParametricas servParametricas = new ServicioParametricas(); ServicioEquipos servEquipo = new ServicioEquipos(); Documento documento = this.Obtener(idDocumento); DocumentoVersion version = documento.ObtenerVersion(idVersion.ConvertirInt()); DocumentoVersionEstado versionEstadoActual = version.ObtenerVersionEstado(); if (versionEstadoActual != null && versionEstadoActual.Estado != null) { //para no duplicar el estado, si ya lo tiene no hce nada if (versionEstadoActual.Estado.Id == idEstado.ConvertirInt()) { return; } //si ya tiene un estado final se quita primero, para que quede un solo estado final if (versionEstadoActual.EstadoFinal.HasValue && versionEstadoActual.EstadoFinal.Value) { version.EliminarVersionEstado(versionEstadoActual.Id); } } DocumentoVersionEstado versionEstado = null; int _idVersionEstado = idVersionEstado.ConvertirInt(); if (_idVersionEstado == -1) { versionEstado = new DocumentoVersionEstado(); } else { versionEstado = version.ObtenerVersionEstado(_idVersionEstado); } versionEstado.Fecha = string.IsNullOrEmpty(fecha) ? DateTime.MinValue : DateTime.Parse(fecha); EstadoDocumento nuevoEstado = null; nuevoEstado = servParametricas.EstadoDocumentoObtener(idEstado.ConvertirInt()); versionEstado.Estado = nuevoEstado; versionEstado.Usuario = usuarioLogin; versionEstado.ProfesionalAutor = servEquipo.ProfesionalObtener(idProfesionalAutor.ConvertirInt()); versionEstado.ProfesionalPresenta = servEquipo.ProfesionalObtener(idProfesionalPresenta.ConvertirInt()); versionEstado.ProfesionalResponsable = servEquipo.ProfesionalObtener(idProfesionalResponsable.ConvertirInt()); versionEstado.Observaciones = string.Empty; TipoDocumentoFlujoEstado flujoEstado = documento.TipoDocumento.ObtenerFlujoDefault().ObtenerFlujoEstado(nuevoEstado); if (flujoEstado != null) { versionEstado.EstadoFinal = flujoEstado.Final; } else { versionEstado.EstadoFinal = false; } versionEstado.Validar(); if (_idVersionEstado == -1) { version.AgregarVersionEstado(versionEstado); } this.Grabar(documento); }