//[Pure] /*private static IEnumerable<T> Replace<T>(this IEnumerable<T> source, T oldValue, T newValue, IEqualityComparer<T> comparer = null) * { * if (source == null) * { * throw new ArgumentNullException(nameof(source)); * } * * comparer = comparer ?? EqualityComparer<T>.Default; * * foreach (var item in source) * { * yield return * comparer.Equals(item, oldValue) * ? newValue * : item; * } * }*/ #endregion #region MetodoReplicar /// <summary> /// Metodo replicar para generar una nueva instancia de un formulario, el cual copia las respuestas del /// ultimo formulario confirmado /// </summary> /// <param name="pRespuestasFormulario"></param> /// <returns></returns> public BE.Formularios.RespuestasFormulario Replicar(int pInternoRespuestaFormulario, int pInternoEstablecimientoDestino) { ITransaction transaction = session.BeginTransaction(); try { //BUsco RespuestasFormulario var respuestasFormulario = session.Get <BE.Formularios.RespuestasFormulario>(pInternoRespuestaFormulario); respuestasFormulario.RespuestasContratista = session.Query <BE.Formularios.RespuestasContratista>().Where(r => r.InternoRespuestaFormulario == pInternoRespuestaFormulario).ToList(); respuestasFormulario.RespuestasCuestionario = session.Query <BE.Formularios.RespuestasCuestionario>().Where(r => r.InternoRespuestaFormulario == pInternoRespuestaFormulario).ToList(); respuestasFormulario.RespuestasGremio = session.Query <BE.Formularios.RespuestasGremio>().Where(r => r.InternoRespuestaFormulario == pInternoRespuestaFormulario).ToList(); respuestasFormulario.RespuestasResponsable = session.Query <BE.Formularios.RespuestasResponsable>().Where(r => r.InternoRespuestaFormulario == pInternoRespuestaFormulario).ToList(); var nuevaRespuestaFormulario = new BE.Formularios.RespuestasFormulario { InternoFormulario = respuestasFormulario.InternoFormulario, InternoEstablecimiento = pInternoEstablecimientoDestino, CreacionFechaHora = DateTime.Today, CompletadoFechaHora = null, NotificacionFecha = respuestasFormulario.NotificacionFecha, InternoPresentacion = 0, //Cuestionario, gremios, contratistas, responsables }; session.Save(nuevaRespuestaFormulario); //RespuestasCuestionario foreach (var item in respuestasFormulario.RespuestasCuestionario) { var respuestasCuestionario = new BE.Formularios.RespuestasCuestionario { InternoCuestionario = item.InternoCuestionario, InternoRespuestaFormulario = nuevaRespuestaFormulario.Interno, Respuesta = item.Respuesta, FechaRegularizacion = item.FechaRegularizacion, Observaciones = item.Observaciones, EstadoAccion = item.EstadoAccion, EstadoFecha = item.EstadoFecha, EstadoSituacion = item.EstadoSituacion, BajaMotivo = item.BajaMotivo, }; session.Save(respuestasCuestionario); } //RespuestasGremio foreach (var item in respuestasFormulario.RespuestasGremio) { var respuestasGremio = new BE.Formularios.RespuestasGremio { InternoRespuestaFormulario = nuevaRespuestaFormulario.Interno, Legajo = item.Legajo, Nombre = item.Nombre, EstadoAccion = item.EstadoAccion, EstadoFecha = item.EstadoFecha, EstadoSituacion = item.EstadoSituacion, BajaMotivo = item.BajaMotivo, Renglon = item.Renglon, }; session.Save(respuestasGremio); } //RespuestasContratista foreach (var item in respuestasFormulario.RespuestasContratista) { var respuestasContratista = new RespuestasContratista { InternoRespuestaFormulario = nuevaRespuestaFormulario.Interno, CUIT = item.CUIT, Contratista = item.Contratista, EstadoAccion = item.EstadoAccion, EstadoFecha = item.EstadoFecha, EstadoSituacion = item.EstadoSituacion, BajaMotivo = item.BajaMotivo, Renglon = item.Renglon, }; session.Save(respuestasContratista); } //RespuestasResponsables foreach (var item in respuestasFormulario.RespuestasResponsable) { var respuestasResponsable = new RespuestasResponsable { InternoRespuestaFormulario = nuevaRespuestaFormulario.Interno, CUIT = item.CUIT, Responsable = item.Responsable, Cargo = item.Cargo, Representacion = item.Representacion, EsContratado = item.EsContratado, TituloHabilitante = item.TituloHabilitante, Matricula = item.Matricula, EntidadOtorganteTitulo = item.EntidadOtorganteTitulo, EstadoAccion = item.EstadoAccion, EstadoFecha = item.EstadoFecha, EstadoSituacion = item.EstadoSituacion, BajaMotivo = item.BajaMotivo, Renglon = item.Renglon, }; session.Save(respuestasResponsable); } /*//RespuestasFormularioRel - Grabo la relación entre el formulario original y la nueva instancia * var respuestasFormularioRel = new BE.Formularios.RespuestasFormularioRel * { * InternoRespuestaFormularioNuevo = nuevaRespuestaFormulario.Interno, * InternoRespuestaFormularioOriginal = pRespuestasFormulario.Interno * }; * session.Save(respuestasFormularioRel);*/ session.Flush(); transaction.Commit(); return(nuevaRespuestaFormulario); } catch (Exception ex) { transaction.Rollback(); throw ex; } }
/// <summary> /// Metodo que confirma el formulario y ademas, compara las respuestas con el formulario original y pone los datos correspondientes en EstadoAccion=" ", EstadoFecha=Hoy /// </summary> /// <param name="pRespuestasFormulario"></param> /// <returns></returns> public bool Confirmar(BE.Formularios.RespuestasFormulario pRespuestasFormulario) { bool ret = false; session.Get <BE.Formularios.RespuestasFormulario>(pRespuestasFormulario.Interno); ITransaction transaction = session.BeginTransaction(); try { pRespuestasFormulario.CompletadoFechaHora = DateTime.Now; session.Merge(pRespuestasFormulario); //Busco si es una nueva presentación y voy controlando los cambios con el formulario original BE.Formularios.RespuestasFormularioRel respuestasFormularioRel = session .Query <BE.Formularios.RespuestasFormularioRel>() .Where(r => r.InternoRespuestaFormularioNuevo == pRespuestasFormulario.Interno) .SingleOrDefault(); if (respuestasFormularioRel != null) { #region RespuestasCuestionario //Hay una presentación anterior, vamos a buscar los datos //RespuestasCuestionario IEnumerable <BE.Formularios.RespuestasCuestionario> respuestasCuestionarioOriginal = session .Query <BE.Formularios.RespuestasCuestionario>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal) .ToList(); IEnumerable <BE.Formularios.RespuestasCuestionario> respuestasCuestionarioNuevo = session .Query <BE.Formularios.RespuestasCuestionario>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioNuevo) .ToList(); //Recorro los registros del nuevo formulario foreach (var item in respuestasCuestionarioNuevo) { //Busco en la info original BE.Formularios.RespuestasCuestionario respuestaOriginal = respuestasCuestionarioOriginal. FirstOrDefault(r => r.InternoCuestionario == item.InternoCuestionario && r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal); item.EstadoAccion = ""; if (respuestaOriginal.Respuesta != item.Respuesta) { item.EstadoAccion = "M"; item.EstadoFecha = ConvertirFecha(DateTime.Today); session.Save(item); } } #endregion #region RespuestasGremio //RespuestasGremios IEnumerable <BE.Formularios.RespuestasGremio> respuestasGremioOriginal = session .Query <BE.Formularios.RespuestasGremio>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal) .ToList(); IEnumerable <BE.Formularios.RespuestasGremio> respuestasGremioNuevo = session .Query <BE.Formularios.RespuestasGremio>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioNuevo) .ToList(); //Recorro los registros del nuevo formulario foreach (var item in respuestasGremioNuevo) { //Busco en la info original BE.Formularios.RespuestasGremio respuestaGremioOriginal = respuestasGremioOriginal. FirstOrDefault(r => r.Renglon == item.Renglon && r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal); item.EstadoAccion = ""; if (respuestaGremioOriginal.Legajo != item.Legajo || respuestaGremioOriginal.Nombre != item.Nombre) { item.EstadoAccion = "M"; item.EstadoSituacion = " "; item.EstadoFecha = ConvertirFecha(DateTime.Today); //Alta if (respuestaGremioOriginal.Legajo == 0 && item.Legajo != 0) { item.EstadoAccion = "A"; } //Baja if (respuestaGremioOriginal.Legajo != 0 && item.Legajo == 0) { item.EstadoAccion = "B"; } session.Save(item); } } #endregion #region RespuestasContratista //RespuestasContratistas IEnumerable <BE.Formularios.RespuestasContratista> respuestasContratistaOriginal = session .Query <BE.Formularios.RespuestasContratista>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal) .ToList(); IEnumerable <BE.Formularios.RespuestasContratista> respuestasContratistaNuevo = session .Query <BE.Formularios.RespuestasContratista>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioNuevo) .ToList(); //Recorro los registros del nuevo formulario foreach (var item in respuestasContratistaNuevo) { //Busco en la info original BE.Formularios.RespuestasContratista respuestaContratistaOriginal = respuestasContratistaOriginal. FirstOrDefault(r => r.Renglon == item.Renglon && r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal); item.EstadoAccion = ""; if (respuestaContratistaOriginal.CUIT != item.CUIT || respuestaContratistaOriginal.Contratista != item.Contratista) { item.EstadoAccion = "M"; item.EstadoSituacion = " "; item.EstadoFecha = ConvertirFecha(DateTime.Today); //Alta if (respuestaContratistaOriginal.CUIT == 0 && item.CUIT != 0) { item.EstadoAccion = "A"; } //Baja if (respuestaContratistaOriginal.CUIT != 0 && item.CUIT == 0) { item.EstadoAccion = "B"; } session.Save(item); } } #endregion #region RespuestasResponsable //RespuestasResonsable IEnumerable <BE.Formularios.RespuestasResponsable> respuestasResponsableOriginal = session .Query <BE.Formularios.RespuestasResponsable>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal) .ToList(); IEnumerable <BE.Formularios.RespuestasResponsable> respuestasResponsableNuevo = session .Query <BE.Formularios.RespuestasResponsable>() .Where(r => r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioNuevo) .ToList(); //Recorro los registros del nuevo formulario foreach (var respuestaResponsableNueva in respuestasResponsableNuevo) { //Busco en la info original BE.Formularios.RespuestasResponsable respuestaResponsableOriginal = respuestasResponsableOriginal. FirstOrDefault(r => r.Renglon == respuestaResponsableNueva.Renglon && r.InternoRespuestaFormulario == respuestasFormularioRel.InternoRespuestaFormularioOriginal); respuestaResponsableNueva.EstadoAccion = " "; if (respuestaResponsableOriginal.CUIT != respuestaResponsableNueva.CUIT || respuestaResponsableOriginal.Cargo != respuestaResponsableNueva.Cargo) { respuestaResponsableNueva.EstadoAccion = "M"; respuestaResponsableNueva.EstadoSituacion = " "; respuestaResponsableNueva.EstadoFecha = ConvertirFecha(DateTime.Today); //Alta if (respuestaResponsableOriginal.CUIT == 0 && respuestaResponsableNueva.CUIT != 0) { respuestaResponsableNueva.EstadoAccion = "A"; } //Baja if (respuestaResponsableOriginal.CUIT != 0 && respuestaResponsableNueva.CUIT == 0) { respuestaResponsableNueva.EstadoAccion = "B"; } session.Save(respuestaResponsableNueva); } } #endregion } session.Flush(); transaction.Commit(); return(ret); } catch (Exception e) { throw e; } }