/// <summary> /// Crear un nuevo Responsables /// </summary> /// <param name="responsable">Objeto a crear, el atributo ResponsableId lo genera la aplicación y es devuelto en el objeto incluido en la respuesta.</param> /// <param name="tk"> Tique de autorzación (se debe obtener con la accion Login)</param> /// <returns></returns> public virtual Responsable Post(Responsable responsable, string tk) { using (PortalProContext ctx = new PortalProContext()) { // comprobar el tique if (!CntWebApiSeguridad.CheckTicket(tk,ctx)) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (Responsables)")); } // comprobar las precondiciones if (responsable == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest)); } int usuarioId = 0; if (responsable.Usuario != null) { usuarioId = responsable.Usuario.UsuarioId; responsable.Usuario = null; } // dar de alta el objeto en la base de datos y devolverlo en el mensaje ctx.Add(responsable); if (usuarioId != 0) { responsable.Usuario = (from u in ctx.Usuarios where u.UsuarioId == usuarioId select u).FirstOrDefault<Usuario>(); } ctx.SaveChanges(); return responsable; } }
// este método se ejecutará de manera asíncrona. public string LaunchResponsable(out int threadId) { threadId = Thread.CurrentThread.ManagedThreadId; // abrir conexiones PortalProContext ctx = new PortalProContext(); string strConnect = ConfigurationManager.ConnectionStrings["PortalProTestConnection"].ConnectionString; SqlConnection con = new SqlConnection(strConnect); con.Open(); string sql = "SELECT COUNT(*) FROM [PortalProTest].[dbo].[Cau_PortalPro_VResponsable]"; SqlCommand cmd = new SqlCommand(sql, con); int totreg = (int)cmd.ExecuteScalar(); int numreg = 0; sql = @"SELECT [ID] ,[NAME] ,[EMAIL] FROM [PortalProTest].[dbo].[Cau_PortalPro_VResponsable]"; cmd = new SqlCommand(sql, con); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { numreg++; string codax = dr.GetString(0); // Buscamos si esa empresa existe Responsable res2 = (from e2 in ctx.Responsables where e2.CodAx == codax select e2).FirstOrDefault<Responsable>(); if (res2 == null) { res2 = new Responsable(); ctx.Add(res2); } res2.CodAx = codax; res2.Nombre = dr.GetString(1); res2.Email = dr.GetString(2); ctx.SaveChanges(); // Actualizar los registros de proceso Progresos progreso = (from p in ctx.Progresos where p.ProgresoId == 5 select p).FirstOrDefault<Progresos>(); if (progreso != null) { progreso.NumReg = numreg; progreso.TotReg = totreg; ctx.SaveChanges(); } } dr.Close(); ctx.Dispose(); con.Close(); con.Dispose(); return ""; }
/// <summary> /// Modificar una Responsable. En el cuerpo del mensaje se envía en el formato adecuado el objeto con los datos modificados /// </summary> /// <param name="id"> Identificador único de la Responsable </param> /// <param name="responsable">Grupo de usuario con los valores que se desean en sus atributos</param> /// <param name="tk"> Tique de autorización (Ver 'Login')</param> /// <returns></returns> public virtual Responsable Put(int id, Responsable responsable, string tk) { using (PortalProContext ctx = new PortalProContext()) { // comprobar el tique if (!CntWebApiSeguridad.CheckTicket(tk, ctx)) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (Responsables)")); } // comprobar los formatos if (responsable == null || id != responsable.ResponsableId) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest)); } // primero buscamos si un grupo con ese id existe Responsable re = (from g in ctx.Responsables where g.ResponsableId == id select g).FirstOrDefault<Responsable>(); // existe? if (re == null) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un grupo con el id proporcionado (Responsables)")); } int usuarioId = 0; if (responsable.Usuario != null) { usuarioId = responsable.Usuario.UsuarioId; responsable.Usuario = null; } // hay que volver a leer el objeto para que lo maneje este contexto. responsable = (from r in ctx.Responsables where r.ResponsableId == id select r).FirstOrDefault<Responsable>(); // modificar el objeto ctx.AttachCopy<Responsable>(responsable); if (usuarioId != 0) { responsable.Usuario = (from u in ctx.Usuarios where u.UsuarioId == usuarioId select u).FirstOrDefault<Usuario>(); } ctx.SaveChanges(); return ctx.CreateDetachedCopy<Responsable>(responsable, x => x.Usuario); } }