本文整理汇总了C#中PortalProModelo.PortalProContext.SaveChanges方法的典型用法代码示例。如果您正苦于以下问题:C# PortalProContext.SaveChanges方法的具体用法?C# PortalProContext.SaveChanges怎么用?C# PortalProContext.SaveChanges使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PortalProModelo.PortalProContext
的用法示例。
在下文中一共展示了PortalProContext.SaveChanges方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LaunchResponsable
// 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 "";
}
示例2: LaunchPedido
// este método se ejecutará de manera asíncrona.
public string LaunchPedido(out int threadId)
{
threadId = Thread.CurrentThread.ManagedThreadId;
int numreg = 0;
int totreg = 0;
PortalProContext ctx = new PortalProContext();
EntitiesModel con = new EntitiesModel();
var rs = (from cp in con.Cau_PortalPro_VCabPedidos
select cp);
totreg = rs.Count();
foreach (Cau_PortalPro_VCabPedido cp1 in rs)
{
numreg++;
// Buscamos si ese pedido ya existe
Pedido p2 = (from p in ctx.Pedidos
where p.NumPedido == cp1.PURCHID
select p).FirstOrDefault<Pedido>();
if (p2 == null)
{
p2 = new Pedido();
p2.NumPedido = cp1.PURCHID;
p2.FechaAlta = cp1.CREATEDDATE;
// buscamos al proveedor
p2.Proveedor = (from pr in ctx.Proveedors
where pr.CodAx == cp1.INVOICEACCOUNT
select pr).FirstOrDefault<Proveedor>();
p2.TotalPedido = 0;
p2.TotalFacturado = 0;
p2.Estado = cp1.ESTADO;
p2.DocumentoPdf = null;
p2.DocumentoXml = null;
p2.TipoPedido = cp1.TIPO;
// buscar la empresa
p2.Empresa = (from e in ctx.Empresas
where e.CodAx == cp1.DATAAREAID
select e).FirstOrDefault<Empresa>();
p2.FechaLimite = cp1.FECHALIMITE;
p2.FechaRecepcion = cp1.FECHARECEPCION;
}
else
{
}
// Actualizar los registros de proceso
Progresos progreso = (from p in ctx.Progresos
where p.ProgresoId == 3
select p).FirstOrDefault<Progresos>();
if (progreso != null)
{
progreso.NumReg = numreg;
progreso.TotReg = totreg;
ctx.SaveChanges();
}
}
return "";
}
示例3: GetLogin
/// <summary>
/// Tras comprobar que un usuario con el login y password dados
/// existe, crea un tique que devuelve en el cuerpo del mensaje
/// </summary>
/// <param name="login">Login del usuario</param>
/// <param name="password">Contraseña del usuario</param>
/// <returns>Un objeto que representa un tique</returns>
/// <remarks>Este es un comentario adicional</remarks>
public virtual WebApiTicket GetLogin(string login, string password)
{
using (PortalProContext ctx = new PortalProContext())
{
WebApiTicket tk = CntWebApiSeguridad.Login(login, password, 30, ctx);
if (tk == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Nombre de usuario o contraseña incorrecto"));
}
else
{
// agregamos el tique recién creado
ctx.Add(tk);
ctx.SaveChanges();
tk = ctx.CreateDetachedCopy<WebApiTicket>(tk, x => x.Usuario);
return tk;
}
}
}
示例4: PutLogin
/// <summary>
/// Renueva el tique por 30 minutos adicionales
/// </summary>
/// <param name="tk">Tique que se desea renovar</param>
/// <returns></returns>
public virtual WebApiTicket PutLogin(string tk)
{
using (PortalProContext ctx = new PortalProContext())
{
// comprueba el tique
if (!CntWebApiSeguridad.CheckTicket(tk, ctx))
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (Login)"));
}
// renueva el tique por 30 minutos más
// en el futuro todo esto debería ser parametrizable
WebApiTicket wtck = (from t in ctx.WebApiTickets
where t.Codigo == tk
select t).FirstOrDefault<WebApiTicket>();
// dado que ha habido una comprobación previa del tique éste
// debería existir.
wtck.Fin = DateTime.Now.AddMinutes(30);
ctx.SaveChanges();
return ctx.CreateDetachedCopy<WebApiTicket>(wtck, x => x.Usuario);
}
}
示例5: Post
/// <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);
}
}
示例6: Delete
/// <summary>
/// Elimina el usuario que coincide con el id pasado
/// </summary>
/// <param name="id">Identificador del usuario a eliminar</param>
/// <param name="tk">Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual bool Delete(int id, 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 (UsuarioProveedor)"));
}
// primero buscamos si un grupo con ese id existe
UsuarioProveedor usu = (from u in ctx.UsuarioProveedors
where u.UsuarioProveedorId == id
select u).FirstOrDefault<UsuarioProveedor>();
// existe?
if (usu == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un usuario con el id proporcionado (UsuarioProveedor)"));
}
ctx.Delete(usu);
ctx.SaveChanges();
return true;
}
}
示例7: Post
/// <summary>
/// Crear un nuevo usuario de proveedor
/// </summary>
/// <param name="Usuario">Objeto a crear, el atributo UsuarioPorveedorId lo genera la aplicación y es devuelto en el objeto incluido en la respuesta.</param>
/// <param name="tk"> Tique de autorización (se debe obtener con la accion Login)</param>
/// <returns></returns>
public virtual UsuarioProveedor Post(UsuarioProveedor usuarioProveedor, 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 (UsuarioProveedor)"));
}
// comprobar las precondiciones
if (usuarioProveedor == null)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// controlar la contraseña.
if (usuarioProveedor.Password != null && usuarioProveedor.Password != "")
{
// se guarda la contraseña encriptada
usuarioProveedor.Password = CntWebApiSeguridad.GetHashCode(usuarioProveedor.Password);
}
int proveedorId = 0;
// Controlamos las propiedades que son en realidad objetos.
if (usuarioProveedor.Proveedor != null)
{
proveedorId = usuarioProveedor.Proveedor.ProveedorId;
usuarioProveedor.Proveedor = null;
}
// dar de alta el objeto en la base de datos y devolverlo en el mensaje
ctx.Add(usuarioProveedor);
if (proveedorId != 0)
{
usuarioProveedor.Proveedor = (from p in ctx.Proveedors
where p.ProveedorId == proveedorId
select p).FirstOrDefault<Proveedor>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<UsuarioProveedor>(usuarioProveedor, x => x.Proveedor);
}
}
示例8: Post
/// <summary>
/// Crear un nueva cabecera de factura
/// </summary>
/// <param name="CabFactura">Objeto a crear, el atributo CabFacturaId 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 CabFactura Post(CabFactura factura, 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 (CabFactura)"));
}
// comprobar las precondiciones
if (factura == null)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// comprobamos que no hay una factura para el mismo proveedor en ese año y con
// el mismo número de factura
CabFactura f = PortalProWebUtility.YaExisteUnaFacturaComoEsta(factura, ctx);
if (f != null)
{
string m = String.Format("Ya hay una factura del proveedor para este año {0:yyyy} con el mismo número {1}", f.FechaEmision, f.NumFactura);
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, m));
}
// Controlamos las propiedades que son en realidad objetos.
int proveedorId = 0;
if (factura.Proveedor != null)
{
proveedorId = factura.Proveedor.ProveedorId;
factura.Proveedor = null;
}
int documentoPdfId = 0;
if (factura.DocumentoPdf != null)
{
documentoPdfId = factura.DocumentoPdf.DocumentoId;
factura.DocumentoPdf = null;
}
int documentoXmlId = 0;
if (factura.DocumentoXml != null)
{
documentoXmlId = factura.DocumentoXml.DocumentoId;
factura.DocumentoXml = null;
}
int empresaId = 0;
if (factura.Empresa != null)
{
empresaId = factura.Empresa.EmpresaId;
factura.Empresa = null;
}
int responsableId = 0;
if (factura.Responsable != null)
{
responsableId = factura.Responsable.ResponsableId;
factura.Responsable = null;
}
// las facturas por defecto tienen el estado recibida
factura.Estado = "ACEPTADA";
// dar de alta el objeto en la base de datos y devolverlo en el mensaje
ctx.Add(factura);
if (proveedorId != 0)
{
factura.Proveedor = (from p in ctx.Proveedors
where p.ProveedorId == proveedorId
select p).FirstOrDefault<Proveedor>();
}
if (documentoPdfId != 0)
{
factura.DocumentoPdf = (from d in ctx.Documentos
where d.DocumentoId == documentoPdfId
select d).FirstOrDefault<Documento>();
}
if (documentoXmlId != 0)
{
factura.DocumentoXml = (from d in ctx.Documentos
where d.DocumentoId == documentoXmlId
select d).FirstOrDefault<Documento>();
}
if (empresaId != 0)
{
factura.Empresa = (from e in ctx.Empresas
where e.EmpresaId == empresaId
select e).FirstOrDefault<Empresa>();
}
if (responsableId != 0)
{
factura.Responsable = (from r in ctx.Responsables
where r.ResponsableId == responsableId
select r).FirstOrDefault<Responsable>();
}
factura.FechaAlta = DateTime.Now;
factura.Historial += String.Format("{0:dd/MM/yyyy hh:mm:ss} La factura {1} con Total {2:0.0} € has sido creada con estado {3} <br/>",
DateTime.Now, factura.NumFactura, factura.TotalFactura, factura.Estado);
ctx.SaveChanges();
return ctx.CreateDetachedCopy<CabFactura>(factura, x => x.Proveedor, x => x.DocumentoPdf, x => x.DocumentoXml);
}
}
示例9: Put
/// <summary>
/// Modificar un usuario ligado a 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 usuario </param>
/// <param name="usuarioProveedor">Datos del usario ligado a proveedor</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual UsuarioProveedor Put(int id, UsuarioProveedor usuarioProveedor, 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 (UsuarioProveedor)"));
}
// comprobar los formatos
if (usuarioProveedor == null || id != usuarioProveedor.UsuarioProveedorId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un usuario con ese id existe
UsuarioProveedor usup = (from up in ctx.UsuarioProveedors
where up.UsuarioProveedorId == id
select up).FirstOrDefault<UsuarioProveedor>();
// existe?
if (usup == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un usuario con el id proporcionado (UsuarioProveedor)"));
}
// controlar la contraseña.
if (usuarioProveedor.Password != null && usuarioProveedor.Password != "" && usuarioProveedor.Password != usup.Password)
{
// se guarda la contraseña encriptada
usuarioProveedor.Password = CntWebApiSeguridad.GetHashCode(usuarioProveedor.Password);
}
int proveedorId = 0;
// Controlamos las propiedades que son en realidad objetos.
if (usuarioProveedor.Proveedor != null)
{
proveedorId = usuarioProveedor.Proveedor.ProveedorId;
usuarioProveedor.Proveedor = null;
}
// modificar el objeto
ctx.AttachCopy<UsuarioProveedor>(usuarioProveedor);
// volvemos a leer el objecto para que lo maneje este contexto.
usuarioProveedor = (from up in ctx.UsuarioProveedors
where up.UsuarioProveedorId == id
select up).FirstOrDefault<UsuarioProveedor>();
if (proveedorId != 0)
{
usuarioProveedor.Proveedor = (from p in ctx.Proveedors
where p.ProveedorId == proveedorId
select p).FirstOrDefault<Proveedor>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<UsuarioProveedor>(usuarioProveedor, x => x.Proveedor );
}
}
示例10: LaunchPedido
// este método se ejecutará de manera asíncrona.
public string LaunchPedido(out int threadId)
{
threadId = Thread.CurrentThread.ManagedThreadId;
// abrir conexiones
PortalProContext ctx = new PortalProContext();
// Actualizar los registros de proceso
Progresos progreso = (from p in ctx.Progresos
where p.ProgresoId == 3
select p).FirstOrDefault<Progresos>();
if (progreso != null)
{
progreso.NumReg = 0;
progreso.TotReg = 1;
ctx.SaveChanges();
}
string strConnect = ConfigurationManager.ConnectionStrings["PortalProTestConnection"].ConnectionString;
SqlConnection con = new SqlConnection(strConnect);
con.Open();
string sql = "SELECT COUNT(*) FROM [dbo].[Cau_PortalPro_VCabPedido]";
SqlCommand cmd = new SqlCommand(sql, con);
int totreg = (int)cmd.ExecuteScalar();
int numreg = 0;
sql = @"SELECT
[PURCHID]
,[INVOICEACCOUNT]
,[DATAAREAID]
,[ESTADO]
,[TIPO]
,[CODCONTACTO]
,[CONTACTO]
,[CREATEDDATE]
,[FECHARECEPCION]
,[FECHALIMITE]
FROM [dbo].[Cau_PortalPro_VCabPedido]";
cmd = new SqlCommand(sql, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
numreg++;
string numpedido = dr.GetString(0);
// Buscamos si esa empresa existe
Pedido ped2 = (from p2 in ctx.Pedidos
where p2.NumPedido == numpedido
select p2).FirstOrDefault<Pedido>();
if (ped2 == null)
{
ped2 = new Pedido();
ctx.Add(ped2);
}
ped2.NumPedido = numpedido;
ped2.Proveedor = (from pr in ctx.Proveedors
where pr.CodAx == dr.GetString(1)
select pr).FirstOrDefault<Proveedor>();
ped2.Empresa = (from e in ctx.Empresas
where e.CodAx == dr.GetString(2)
select e).FirstOrDefault<Empresa>();
ped2.Actualizado = DateTime.Now;
if (!dr.IsDBNull(3))
{
switch (dr.GetString(3))
{
case "Facturado":
ped2.Estado = "FACTURADO";
break;
case "Pedido Abierto":
ped2.Estado = "ABIERTO";
break;
case "Recibido":
ped2.Estado = "RECIBIDO";
break;
case "Cancelado":
ped2.Estado = "CANCELADO";
break;
}
}
if (!dr.IsDBNull(4))
{
switch (dr.GetString(4))
{
case "Pedido de Compra":
ped2.TipoPedido = "COMPRA";
break;
case "Suscripción":
ped2.TipoPedido = "SUSCRIPCION";
break;
case "Solicitud de Compra":
ped2.TipoPedido = "SOLICITUD";
break;
}
}
ped2.Responsable = (from r in ctx.Responsables
where r.CodAx == dr.GetString(5)
select r).FirstOrDefault<Responsable>();
ped2.FechaAlta = dr.GetDateTime(7);
if (!dr.IsDBNull(8)) ped2.FechaRecepcion = dr.GetDateTime(8);
if (!dr.IsDBNull(9))
{
ped2.FechaLimite = dr.GetDateTime(9);
// hay que controlar le fecha nula AX (01/01/1900)
//.........这里部分代码省略.........
示例11: Delete
/// <summary>
/// Elimina el log que coincide con el id pasado. La solicitud a la que pertenece
/// pasa al estado de pendiente.
/// </summary>
/// <param name="id">Identificador del log a eliminar</param>
/// <param name="tk">Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual bool Delete(int id, 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 (SolicitudLogs)"));
}
// primero buscamos si un grupo con ese id existe
SolicitudLog slg = (from s in ctx.SolicitudLogs
where s.SolicitudLogId == id
select s).FirstOrDefault<SolicitudLog>();
// existe?
if (slg == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un log con el id proporcionado (SolicitudLogs)"));
}
// salvamos la solicitud que habrá que actualizar
SolicitudProveedor sp = slg.SolicitudProveedor;
if (sp != null)
{
// Estado 1 = Pendiente
sp.SolicitudStatus = (from s in ctx.SolicitudStatus
where s.SolicitudStatusId == 1
select s).FirstOrDefault<SolicitudStatus>();
}
ctx.Delete(slg);
ctx.SaveChanges();
return true;
}
}
示例12: Delete
/// <summary>
/// Elimina el proveedor que coincide con el id pasado
/// </summary>
/// <param name="id">Identificador del proveedor a eliminar</param>
/// <param name="tk">Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual bool Delete(int id, 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)"));
}
// primero buscamos si un grupo con ese id existe
Proveedor pro = (from u in ctx.Proveedors
where u.ProveedorId == id
select u).FirstOrDefault<Proveedor>();
// existe?
if (pro == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un grupo con el id proporcionado (Proveedores)"));
}
// hay que eliminar los ficheros asociados.
foreach (Documento d in pro.Documentos)
{
PortalProWebUtility.EliminarDocumento(d, ctx);
}
ctx.Delete(pro);
ctx.SaveChanges();
return true;
}
}
示例13: LaunchFactura
// este método se ejecutará de manera asíncrona.
public string LaunchFactura(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_VCabFactura]";
SqlCommand cmd = new SqlCommand(sql, con);
int totreg = (int)cmd.ExecuteScalar();
int numreg = 0;
sql = @"SELECT
[ACCOUNTNUM]
,[IDEMPRESA]
,[INVOICEID]
,[INVOICEDATE]
,[INVOICEAMOUNT]
,[FECHAPAGO]
,[ESTADI]
,[FECHAVENCIMIENTO]
FROM [PortalProTest].[dbo].[Cau_PortalPro_VCabFactura]";
cmd = new SqlCommand(sql, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
numreg++;
string codAxProveedor = dr.GetString(0);
string numFactura = dr.GetString(2);
DateTime fechaFactura = dr.GetDateTime(3);
Proveedor proveedor = (from pr in ctx.Proveedors
where pr.CodAx == codAxProveedor
select pr).FirstOrDefault<Proveedor>();
// Buscamos si la fcatura ya existe
CabFactura fac = (from f in ctx.CabFacturas
where f.NumFactura == numFactura &&
f.FechaEmision == fechaFactura
select f).FirstOrDefault<CabFactura>();
if (fac == null)
{
fac = new CabFactura();
fac.FechaAlta = DateTime.Now;
ctx.Add(fac);
}
fac.Proveedor = proveedor;
fac.NumFactura = numFactura;
fac.FechaEmision = fechaFactura;
fac.Empresa = (from e in ctx.Empresas
where e.CodAx == dr.GetString(1)
select e).FirstOrDefault<Empresa>();
string estado = dr.GetString(6);
switch (estado)
{
case "Pagado":
fac.Estado = "PAGADA";
break;
case "Recibido":
fac.Estado = "PROCESADA";
break;
}
fac.TotalFactura = dr.GetDecimal(4);
if (!dr.IsDBNull(5))
fac.FechaCobro = dr.GetDateTime(5);
if (!dr.IsDBNull(7))
fac.FechaPrevistaCobro = dr.GetDateTime(7);
try
{
ctx.SaveChanges();
}
catch (Exception ex)
{
}
// cargar las lineas
try
{
LoadAssociateLines(numFactura, fechaFactura);
}
catch (Exception ex)
{
}
// Actualizar los registros de proceso
Progresos progreso = (from p in ctx.Progresos
where p.ProgresoId == 4
select p).FirstOrDefault<Progresos>();
if (progreso != null)
{
progreso.NumReg = numreg;
progreso.TotReg = totreg;
ctx.SaveChanges();
}
}
dr.Close();
ctx.Dispose();
con.Close();
con.Dispose();
return "";
}
示例14: Put
/// <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);
}
}
示例15: Put
//.........这里部分代码省略.........
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un factura con ese id existe
CabFactura cfac = (from f in ctx.CabFacturas
where f.CabFacturaId == id
select f).FirstOrDefault<CabFactura>();
// existe?
if (cfac == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay una factura con el id proporcionado (CabFactura)"));
}
if (factura.Estado == "PROCESADA")
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Las facturas procesadas no pueden ser modificadas (CabFactura)"));
}
// comprobamos que no hay una factura para el mismo proveedor en ese año y con
// el mismo número de factura
CabFactura fc = PortalProWebUtility.YaExisteUnaFacturaComoEsta(factura, ctx);
if (fc != null)
{
string m = String.Format("Ya hay una factura del proveedor para este año {0:yyyy} con el mismo número {1}", fc.FechaEmision, fc.NumFactura);
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, m));
}
// Controlamos las propiedades que son en realidad objetos.
int proveedorId = 0;
if (factura.Proveedor != null)
{
proveedorId = factura.Proveedor.ProveedorId;
factura.Proveedor = null;
}
int documentoPdfId = 0;
if (factura.DocumentoPdf != null)
{
documentoPdfId = factura.DocumentoPdf.DocumentoId;
factura.DocumentoPdf = null;
}
int documentoXmlId = 0;
if (factura.DocumentoXml != null)
{
documentoXmlId = factura.DocumentoXml.DocumentoId;
factura.DocumentoXml = null;
}
int empresaId = 0;
if (factura.Empresa != null)
{
empresaId = factura.Empresa.EmpresaId;
factura.Empresa = null;
}
int responsableId = 0;
if (factura.Responsable != null)
{
responsableId = factura.Responsable.ResponsableId;
factura.Responsable = null;
}
// modificar el objeto
if (factura.Estado == null)
factura.Estado = "ACEPTADA";
ctx.AttachCopy<CabFactura>(factura);
// volvemos a leer el objecto para que lo maneje este contexto.
factura = (from f in ctx.CabFacturas
where f.CabFacturaId == id
select f).FirstOrDefault<CabFactura>();
if (proveedorId != 0)
{
factura.Proveedor = (from p in ctx.Proveedors
where p.ProveedorId == proveedorId
select p).FirstOrDefault<Proveedor>();
}
if (documentoPdfId != 0)
{
factura.DocumentoPdf = (from d in ctx.Documentos
where d.DocumentoId == documentoPdfId
select d).FirstOrDefault<Documento>();
}
if (documentoXmlId != 0)
{
factura.DocumentoXml = (from d in ctx.Documentos
where d.DocumentoId == documentoXmlId
select d).FirstOrDefault<Documento>();
}
if (empresaId != 0)
{
factura.Empresa = (from e in ctx.Empresas
where e.EmpresaId == empresaId
select e).FirstOrDefault<Empresa>();
}
if (responsableId != 0)
{
factura.Responsable = (from r in ctx.Responsables
where r.ResponsableId == responsableId
select r).FirstOrDefault<Responsable>();
}
factura.Historial += String.Format("{0:dd/MM/yyyy hh:mm:ss} La factura {1} con Total {2:0.0} € has sido modificada con estado {3} <br/>",
DateTime.Now, factura.NumFactura, factura.TotalFactura, factura.Estado);
factura.Generada = false;
ctx.SaveChanges();
return ctx.CreateDetachedCopy<CabFactura>(factura, x => x.Proveedor, x => x.DocumentoPdf, x => x.DocumentoXml);
}
}