private void MakeRendicion(int idSolOrg) { TransactionScope _transaction = new TransactionScope(); Solicitud sol = Solicitud.GetById(idSolOrg); DateTime fechanula = DateTime.Parse("01/01/1900"); Solicitud reporte ; try { reporte = Solicitud.FindOne(Expression.Eq("IdSolicitudInicial", idSolOrg)); if (reporte == null) { reporte = new Solicitud(); reporte.IdSolicitudInicial = sol.Id_Solicitud; reporte.IdCliente = sol.IdCliente; reporte.IdTipoSolicitud = sol.IdTipoSolicitud; reporte.IdUsuarioCreador = BiFactory.User.IdUsuario; reporte.Reporte = "SI"; reporte.Status = eEstados.Pendiente.ToString(); reporte.NroOrdenCte = sol.NroOrdenCte; reporte.Contacto = sol.Contacto; reporte.ContactoMail = sol.ContactoMail; reporte.ContactoTel = sol.ContactoTel; reporte.Descripcion = sol.Descripcion; reporte.FechaCreacion = DateTime.Now; reporte.FechaAprobacionCalidad = fechanula; reporte.FechaAprobacionTecnica = fechanula; reporte.FechaReprogramacion = fechanula; reporte.FechaSuspencion = fechanula; reporte.ProximaFechaInicio = fechanula; reporte.ProximaFechaFin = fechanula; reporte.Save(); TipoSolicitud tipo = sol.Tipo; if (tipo.IdTiposolicitud == 1) ///Mantenimiento Preventivo { SolicitudPreventivo Sol_Prev = SolicitudPreventivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg)); Sol_Prev.Id = 0; Sol_Prev.IdSolicitud = reporte.Id_Solicitud; Sol_Prev.SaveCopyAndFlush(); //copio las tareas SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudTareas t in tt) { t.Id = 0; //para que guarde una copia t.IdSolicitud = reporte.Id_Solicitud; t.SaveCopyAndFlush(); } } if (tipo.IdTiposolicitud == 2) ///Mantenimiento Correctivo { SolicitudCorrectivo Sol_Corr_original= SolicitudCorrectivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg)); Sol_Corr_original.Id = 0; Sol_Corr_original.IdSolicitud = reporte.Id_Solicitud; Sol_Corr_original.FechaResolucion = DateTime.Parse("1900-01-01"); Sol_Corr_original.SaveCopyAndFlush(); } if (tipo.IdTiposolicitud == 6) ///Obras e Instalaciones { SolicitudObra Sol_Obra = SolicitudObra.FindOne(Expression.Eq("IdSolicitud",idSolOrg)); Sol_Obra.Id = 0; Sol_Obra.IdSolicitud = reporte.Id_Solicitud; Sol_Obra.SaveCopy(); } //copio las PErsonas SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosEmpleados e in ee) { e.Id = 0; e.IdSolicitud = reporte.Id_Solicitud; e.SaveCopy(); } //copio los vehiculos SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosVehiculos v in vv) { v.Id = 0; v.IdSolicitud = reporte.Id_Solicitud; v.Horas = 0; v.Km = 0; v.SaveCopy(); } } reporte.Save(); //BiFactory.Sol = reporte; } catch (Exception) { _transaction.VoteRollBack(); throw; } finally { _transaction.Dispose(); switch (sol.IdTipoSolicitud) { case 1: Response.Redirect("MantPreventivoRendicion.aspx"); break; case 2: Response.Redirect("MantCorrectivoRendicion.aspx"); break; case 6: Response.Redirect("Reporte_Obras.aspx"); break; } } }