コード例 #1
0
 /// <summary>
 /// Modificar un proveedor. En el cuerpo del mensaje se envía en el formato adecuado el objeto con los datos modificados
 /// </summary>
 /// <param name="id"> Identificador único del grupo </param>
 /// <param name="proveedor">Grupo de proveedor con los valores que se desean en sus atributos</param>
 /// <param name="tk"> Tique de autorización (Ver 'Login')</param>
 /// <returns></returns>
 public virtual Proveedor Put(int id, Proveedor proveedor, 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 (Proveedores)"));
         }
         // comprobar los formatos
         if (proveedor == null || id != proveedor.ProveedorId)
         {
             throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
         // primero buscamos si un proveedor con ese id existe
         Proveedor pro = (from p in ctx.Proveedors
                        where p.ProveedorId == id
                        select p).FirstOrDefault<Proveedor>();
         // existe?
         if (pro == null)
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un proveedor con el id proporcionado (Proveedores)"));
         }
         int grupoProveedorId = 0;
         // Controlamos las propiedades que son en realidad objetos.
         if (proveedor.GrupoProveedor != null)
         {
             grupoProveedorId = proveedor.GrupoProveedor.GrupoProveedorId;
             proveedor.GrupoProveedor = null;
         }
         // modificar el objeto
         ctx.AttachCopy<Proveedor>(proveedor);
         // volvemos a leer el objecto para que lo maneje este contexto.
         proveedor = (from u in ctx.Proveedors
                    where u.ProveedorId == id
                    select u).FirstOrDefault<Proveedor>();
         if (grupoProveedorId != 0)
         {
             proveedor.GrupoProveedor = (from gp in ctx.GrupoProveedors
                                     where gp.GrupoProveedorId == grupoProveedorId
                                     select gp).FirstOrDefault<GrupoProveedor>();
         }
         ctx.SaveChanges();
         return ctx.CreateDetachedCopy<Proveedor>(proveedor, x => x.GrupoProveedor);
     }
 }
コード例 #2
0
 // este método se ejecutará de manera asíncrona.
 public string LaunchProveedor(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_VProveedores]";
     SqlCommand cmd = new SqlCommand(sql, con);
     int totreg = (int)cmd.ExecuteScalar();
     int numreg = 0;
     sql = @"SELECT  
                 [ACCOUNTNUM]
                 ,[NAME]
                 ,[ADDRESS]
                 ,[CITY]
                 ,[ZIPCODE]
                 ,[COUNTRYREGIONID]
                 ,[PHONE]
                 ,[TELEFAX]
                 ,[CELLULARPHONE]
                 ,[EMAIL]
                 ,[VATNUM]
                 ,[CONTACTO]
                 ,[LINEOFBUSINESSID]
                 ,[CAUPORTALPROEMAIL]
                 ,[BANKIBAN]
                 ,[CAUPORTALPROALLOWINVOICE]
             FROM [PortalProTest].[dbo].[Cau_PortalPro_VProveedores]";
     cmd = new SqlCommand(sql, con);
     SqlDataReader dr = cmd.ExecuteReader();
     while (dr.Read())
     {
         numreg++;
         string accountnum = dr.GetString(0);
         Proveedor pr2 = (from p2 in ctx.Proveedors
                          where p2.CodAx == accountnum
                          select p2).FirstOrDefault<Proveedor>();
         if (pr2 == null)
         {
             pr2 = new Proveedor();
             ctx.Add(pr2);
         }
         pr2.CodAx = accountnum;
         pr2.NombreComercial = dr.GetString(1);
         pr2.RazonSocial = dr.GetString(1);
         pr2.Direccion = dr.GetString(2);
         pr2.Localidad = dr.GetString(3);
         pr2.CodPostal = dr.GetString(4);
         pr2.Pais = dr.GetString(5);
         pr2.Telefono = dr.GetString(6);
         pr2.Fax = dr.GetString(7);
         pr2.Movil = dr.GetString(8);
         pr2.Email = dr.GetString(9);
         pr2.Nif = dr.GetString(10);
         if (!dr.IsDBNull(11)) pr2.PersonaContacto = dr.GetString(11);
         pr2.EmailFacturas = dr.GetString(13);
         if (!dr.IsDBNull(14)) pr2.IBAN = dr.GetString(14);
         ctx.SaveChanges();
         // Actualizar los registros de proceso
         Progresos progreso = (from p in ctx.Progresos
                               where p.ProgresoId == 2
                               select p).FirstOrDefault<Progresos>();
         if (progreso != null)
         {
             progreso.NumReg = numreg;
             progreso.TotReg = totreg;
             ctx.SaveChanges();
         }
     }
     dr.Close();
     ctx.Dispose();
     con.Close();
     con.Dispose();
     return "";
 }
コード例 #3
0
 /// <summary>
 /// Crear un nuevo proveedor
 /// </summary>
 /// <param name="Proveedor">Objeto a crear, el atributo ProveedorId 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 Proveedor Post(Proveedor proveedor, 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 (Proveedores)"));
         }
         // comprobar las precondiciones
         if (proveedor == null)
         {
             throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
         int grupoProveedorId = 0;
         // Controlamos las propiedades que son en realidad objetos.
         if (proveedor.GrupoProveedor != null)
         {
             grupoProveedorId = proveedor.GrupoProveedor.GrupoProveedorId;
             proveedor.GrupoProveedor = null;
         }
         // dar de alta el objeto en la base de datos y devolverlo en el mensaje
         ctx.Add(proveedor);
         if (grupoProveedorId != 0)
         {
             proveedor.GrupoProveedor = (from gp in ctx.GrupoProveedors
                                     where gp.GrupoProveedorId == grupoProveedorId
                                     select gp).FirstOrDefault<GrupoProveedor>();
         }
         ctx.SaveChanges();
         return ctx.CreateDetachedCopy<Proveedor>(proveedor, x => x.GrupoProveedor);
     }
 }
コード例 #4
0
 /// <summary>
 /// Comprueba que los ficheros necesarios para asociar a un proveedor están peresentes
 /// Si esa comprobación es superada dá de alta los ficheros asociados.
 /// </summary>
 /// <param name="webRoot">Directorio en el que la carga ha dejado los ficheros</param>
 /// <param name="tk">El código de tique usado en este momento</param>
 /// <param name="solProveedor">Proveedor al que asociarán los ficheros</param>
 /// <param name="ctx">Contexto de OpenAccess usado por el proceso.</param>
 /// <returns>Una cadena vacía en el caso de que todo haya sido correcto y si no el mensaje explicativo</returns>
 public static string ComprobarCargarFicherosProveedor(string webRoot, string tk, Proveedor proveedor, PortalProContext ctx)
 {
     string mens = ""; // mensaje que devoveremos, si vacío todo OK
     string[] listaFicheros; // lista de los ficheros contenidos en el directorio de carga
     // lo primero de todo que no ha habido un error en el directorio 
     if (!Directory.Exists(webRoot))
     {
         return "No existe el directorio de carga";
     }
     else
     {
         // cargamos la lista de ficheros del directorio de carga
         listaFicheros = Directory.GetFiles(webRoot);
     }
     // comprobamos si existe el parámetro que define donde esta el repositorio
     string repo = ConfigurationManager.AppSettings["PortalProRepositorio"];
     if (repo == null || repo == "")
     {
         return "No existe o está vació el parámetro de ubicación del repositorio en el Web.config";
     }
     // comprobamos que el directorio físicamente existe (si no lo creamos);
     if (!Directory.Exists(repo))
     {
         Directory.CreateDirectory(repo);
     }
     // por cada tipo de fichero asociado al grupo de proveedores al que pertenecerá este
     // comprbamos que existe el fichero correspondiente en el directorio de carga.
     foreach (TipoDocumentoGrupoProveedor tdgp in proveedor.GrupoProveedor.TipoDocumentoGrupoProveedors)
     {
         TipoDocumento td = tdgp.TipoDocumento;
         string buscador = String.Format("{0}#{1}#", tk, td.TipoDocumentoId);
         string fichero = (from f in listaFicheros
                           where f.Contains(buscador)
                           select f).FirstOrDefault<string>();
         if (fichero == null)
         {
             return "Faltan ficheros asociados a este proveedor";
         }
         // creamos el documento correspondiente asignando un nuevo nombre que empieza por el NIF
         Documento d = new Documento();
         d.TipoDocumento = td;
         d.Proveedor = proveedor;
         int posFich = fichero.LastIndexOf("#");
         int posExten = fichero.LastIndexOf(".");
         d.NomFichero = String.Format("{0}_{1}_{2}", proveedor.Nif, td.TipoDocumentoId, fichero.Substring(posFich + 1));
         d.Extension = fichero.Substring(posExten + 1);
         // copiamos al repositorio
         File.Copy(fichero, Path.Combine(repo, d.NomFichero));
         ctx.Add(d);
     }
     // si llegamos aquí podemos borrar los ficheros del directorio de carga
     var rs = (from f in listaFicheros
               where f.Contains(String.Format("{0}#", tk))
               select f);
     foreach (string f in rs)
     {
         File.Delete(f);
     }
     return mens;
 }