本文整理汇总了C#中PortalProModelo.PortalProContext.AttachCopy方法的典型用法代码示例。如果您正苦于以下问题:C# PortalProContext.AttachCopy方法的具体用法?C# PortalProContext.AttachCopy怎么用?C# PortalProContext.AttachCopy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PortalProModelo.PortalProContext
的用法示例。
在下文中一共展示了PortalProContext.AttachCopy方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Put
/// <summary>
/// Modificar un log de solicitud. 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 log </param>
/// <param name="solog">Log de solicitud con los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual SolicitudLog Put(int id, SolicitudLog solog, 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)"));
}
// comprobar los formatos
if (solog == null || id != solog.SolicitudLogId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un solog con ese id existe
SolicitudLog slg = (from u in ctx.SolicitudLogs
where u.SolicitudLogId == id
select u).FirstOrDefault<SolicitudLog>();
// existe?
if (slg == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un solog con el id proporcionado (SolicitudLogs)"));
}
//
int usuarioId = 0;
int solicitudProveedorId = 0;
int solStatusFinId = 0;
int solStatusInicioId = 0;
// Controlamos las propiedades que son en realidad objetos.
if (solog.Usuario != null)
{
usuarioId = solog.Usuario.UsuarioId;
solog.Usuario = null;
}
if (solog.SolicitudProveedor != null)
{
solicitudProveedorId = solog.SolicitudProveedor.SolicitudProveedorId;
solog.SolicitudProveedor = null;
}
if (solog.SolicitudStatusInicial != null)
{
solStatusInicioId = solog.SolicitudStatusInicial.SolicitudStatusId;
solog.SolicitudStatusInicial = null;
}
if (solog.SolicitudStatusFinal != null)
{
solStatusFinId = solog.SolicitudStatusFinal.SolicitudStatusId;
solog.SolicitudStatusFinal = null;
}
// modificar el objeto
ctx.AttachCopy<SolicitudLog>(solog);
// volvemos a leer el objecto para que lo maneje este contexto.
solog = (from s in ctx.SolicitudLogs
where s.SolicitudLogId == id
select s).FirstOrDefault<SolicitudLog>();
if (usuarioId != 0)
{
solog.Usuario = (from u in ctx.Usuarios
where u.UsuarioId == usuarioId
select u).FirstOrDefault<Usuario>();
}
if (solicitudProveedorId != 0)
{
solog.SolicitudProveedor = (from s in ctx.SolicitudProveedors
select s).FirstOrDefault<SolicitudProveedor>();
}
if (solStatusInicioId != 0)
{
solog.SolicitudStatusInicial = (from s in ctx.SolicitudStatus
select s).FirstOrDefault<SolicitudStatus>();
}
if (solStatusFinId != 0)
{
solog.SolicitudStatusFinal = (from s in ctx.SolicitudStatus
select s).FirstOrDefault<SolicitudStatus>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<SolicitudLog>(solog, x => x.Usuario, x => x.SolicitudProveedor, x => x.SolicitudStatusInicial, x => x.SolicitudStatusFinal);
}
}
示例2: 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 );
}
}
示例3: 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);
}
}
示例4: Put
/// <summary>
/// Modificar una cabecera de factura. 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 cabecera de factura </param>
/// <param name="factura">Cabecera de factura los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual CabFactura Put(int id, 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 los formatos
if (factura == null || id != factura.CabFacturaId)
{
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)
//.........这里部分代码省略.........
示例5: Put
/// <summary>
/// Modificar una solicitud. 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 solicitud </param>
/// <param name="solProveedor">Solicitud de proveedor con los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login'). Caso "solicitud"</param>
/// <returns></returns>
public virtual SolicitudProveedor Put(int id, SolicitudProveedor solProveedor, string tk)
{
using (PortalProContext ctx = new PortalProContext())
{
// comprobar el tique
// se permite si el valor es "solicitud" siempre
if (!CntWebApiSeguridad.CheckTicket(tk, ctx) && tk != "solicitud")
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (Solicitudes proveedores)"));
}
// comprobar los formatos
if (solProveedor == null || id != solProveedor.SolicitudProveedorId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si una solicitud con ese id existe
SolicitudProveedor solPro = (from sp in ctx.SolicitudProveedors
where sp.SolicitudProveedorId == id
select sp).FirstOrDefault<SolicitudProveedor>();
// existe?
if (solPro == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay una solicitud con el id proporcionado (Solicitudes proveedores)"));
}
int grupoProveedorId = 0;
int solicitudStatusId = 0;
// Controlamos las propiedades que son en realidad objetos.
if (solProveedor.GrupoProveedor != null)
{
grupoProveedorId = solProveedor.GrupoProveedor.GrupoProveedorId;
solProveedor.GrupoProveedor = null;
}
// modificar el objeto
ctx.AttachCopy<SolicitudProveedor>(solProveedor);
// volvemos a leer el objecto para que lo maneje este contexto.
solProveedor = (from sp in ctx.SolicitudProveedors
where sp.SolicitudProveedorId == id
select sp).FirstOrDefault<SolicitudProveedor>();
if (grupoProveedorId != 0)
{
solProveedor.GrupoProveedor = (from gp in ctx.GrupoProveedors
where gp.GrupoProveedorId == grupoProveedorId
select gp).FirstOrDefault<GrupoProveedor>();
}
if (solicitudStatusId != 0)
{
solProveedor.SolicitudStatus = (from ss in ctx.SolicitudStatus
where ss.SolicitudStatusId == solicitudStatusId
select ss).FirstOrDefault<SolicitudStatus>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<SolicitudProveedor>(solProveedor, x => x.GrupoProveedor, x => x.SolicitudStatus);
}
}
示例6: Put
/// <summary>
/// Modificar una linea de factura. 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 linea de fcatura</param>
/// <param name="linea">Linea de fcatura con los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual LinFactura Put(int id, LinFactura linea, 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 (LinFactura)"));
}
// comprobar los formatos
if (linea == null || id != linea.LinFacturaId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si uan linea con ese id existe
LinFactura lin = (from l in ctx.LinFacturas
where l.LinFacturaId == id
select l).FirstOrDefault<LinFactura>();
// existe?
if (lin == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay una linea con el id proporcionado (LinFactura)"));
}
int cabFacturaId = 0;
// Controlamos las propiedades que son en realidad objetos.
if (lin.CabFactura != null)
{
cabFacturaId = lin.CabFactura.CabFacturaId;
linea.CabFactura = null;
}
// modificar el objeto
ctx.AttachCopy<LinFactura>(linea);
// volvemos a leer el objecto para que lo maneje este contexto.
linea = (from l in ctx.LinFacturas
where l.LinFacturaId == id
select l).FirstOrDefault<LinFactura>();
if (cabFacturaId != 0)
{
linea.CabFactura = (from f in ctx.CabFacturas
where f.CabFacturaId == cabFacturaId
select f).FirstOrDefault<CabFactura>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<LinFactura>(linea, x => x.CabFactura);
}
}
示例7: Put
/// <summary>
/// Modificar un Parametro de 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 de la Parametro </param>
/// <param name="parametro">Grupo de poveedor con los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual Parametro Put(int id, Parametro parametro, 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 (Parametros)"));
}
// comprobar los formatos
if (parametro == null || id != parametro.ParametroId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un Parametro con ese id existe
Parametro pl = (from p in ctx.Parametros1
where p.ParametroId == id
select p).FirstOrDefault<Parametro>();
// existe?
if (pl == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un Parametro con el id proporcionado (Parametros)"));
}
// modificar el objeto
ctx.AttachCopy<Parametro>(parametro);
ctx.SaveChanges();
return parametro;
}
}
示例8: Put
/// <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);
}
}
示例9: Put
/// <summary>
/// Modificar una cabecera de pedido. 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 cabecera de factura </param>
/// <param name="pedido">Cabecera de pedido los valores que se desean en sus atributos</param>
/// <param name="tk"> Tique de autorización (Ver 'Login')</param>
/// <returns></returns>
public virtual Pedido Put(int id, Pedido pedido, 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 (Pedido)"));
}
// comprobar los formatos
if (pedido == null || id != pedido.PedidoId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un factura con ese id existe
Pedido ped = (from p in ctx.Pedidos
where p.PedidoId == id
select p).FirstOrDefault<Pedido>();
// existe?
if (ped == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un pedido con el id proporcionado (Pedido)"));
}
// Controlamos las propiedades que son en realidad objetos.
int proveedorId = 0;
if (pedido.Proveedor != null)
{
proveedorId = pedido.Proveedor.ProveedorId;
pedido.Proveedor = null;
}
int responsableId = 0;
if (pedido.Responsable != null)
{
responsableId = pedido.Responsable.ResponsableId;
pedido.Responsable = null;
}
int empresaId = 0;
if (pedido.Empresa != null)
{
empresaId = pedido.Empresa.EmpresaId;
pedido.Empresa = null;
}
int documentoXmlId = 0;
if (pedido.DocumentoXml != null)
{
documentoXmlId = pedido.DocumentoXml.DocumentoId;
pedido.DocumentoXml = null;
}
int documentoPdfId = 0;
if (pedido.DocumentoPdf != null)
{
documentoPdfId = pedido.DocumentoPdf.DocumentoId;
pedido.DocumentoPdf = null;
}
// modificar el objeto
ctx.AttachCopy<Pedido>(pedido);
// volvemos a leer el objecto para que lo maneje este contexto.
pedido = (from p in ctx.Pedidos
where p.PedidoId == id
select p).FirstOrDefault<Pedido>();
if (proveedorId != 0)
{
pedido.Proveedor = (from p in ctx.Proveedors
where p.ProveedorId == proveedorId
select p).FirstOrDefault<Proveedor>();
}
if (empresaId != 0)
{
pedido.Empresa = (from p in ctx.Empresas
where p.EmpresaId == empresaId
select p).FirstOrDefault<Empresa>();
}
if (responsableId != 0)
{
pedido.Responsable = (from p in ctx.Responsables
where p.ResponsableId == responsableId
select p).FirstOrDefault<Responsable>();
}
if (documentoXmlId != 0)
{
pedido.DocumentoXml = (from d in ctx.Documentos
where d.DocumentoId == documentoPdfId
select d).FirstOrDefault<Documento>();
}
if (documentoPdfId != 0)
{
pedido.DocumentoPdf = (from d in ctx.Documentos
where d.DocumentoId == documentoPdfId
select d).FirstOrDefault<Documento>();
}
ctx.SaveChanges();
return ctx.CreateDetachedCopy<Pedido>(pedido, x => x.Proveedor, x => x.DocumentoPdf, x => x.Empresa);
}
//.........这里部分代码省略.........
示例10: Put
/// <summary>
/// Modificar un grupo de usuario. 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="grupoUsuario">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 GrupoUsuario Put(int id, GrupoUsuario grupoUsuario, 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 (Grupo de usuarios)"));
}
// comprobar los formatos
if (grupoUsuario == null || id != grupoUsuario.GrupoUsuarioId)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
}
// primero buscamos si un grupo con ese id existe
GrupoUsuario gu = (from g in ctx.GrupoUsuarios
where g.GrupoUsuarioId == id
select g).FirstOrDefault<GrupoUsuario>();
// existe?
if (gu == null)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay un grupo con el id proporcionado (Grupo de usuarios)"));
}
// modificar el objeto
ctx.AttachCopy<GrupoUsuario>(grupoUsuario);
ctx.SaveChanges();
return grupoUsuario;
}
}
示例11: Put
public virtual CabFactura Put(int id, CabFactura factura, string userId, string tk, string gen)
{
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 los formatos
if (factura == null || id != factura.CabFacturaId)
{
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));
}
string application = "PortalPro";
switch (userId.Substring(0, 1))
{
case "U":
application = "PortalPro2";
break;
case "G":
application = "PortalPro";
break;
}
// En la actualización a lo mejor no han cargado ningún archivo
string fPdf = PortalProWebUtility.BuscarArchivoCargado(application, userId, "Factura", "PDF");
if (fPdf == "")
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Se necesita un fichero PDF asociado a la factura (CabFactura)"));
}
// el archivo Xml no es obligatorio, pero si lo han subido cargamos el fichero
string fXml = PortalProWebUtility.BuscarArchivoCargado(application, userId, "Factura", "XML");
// 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;
}
if (factura.Estado == null)
factura.Estado = "ACEPTADA";
// modificar el objeto
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)
//.........这里部分代码省略.........