예제 #1
0
        public static Response <Pedido> Post(this Pedido request,
                                             Factory factory,
                                             IHttpRequest httpRequest)
        {
            factory.Execute(proxy => {
                var session = httpRequest.GetSession();

                request.IdCreadoPor        = int.Parse(session.UserAuthId);
                request.Id                 = 0;
                request.FechaAceptacion    = null;
                request.FechaEnvio         = null;
                request.FechaAnulado       = null;
                request.FechaCreacion      = DateTime.Today;
                request.FechaActualizacion = request.FechaCreacion;
                request.IdAceptadoPor      = null;
                request.IdAnuladoPor       = null;
                request.IdEnviadoPor       = null;

                var fp = proxy.CheckExistAndActivo <FormaPago>(request.IdFormaPago, f => f.Descripcion);
                request.DescripcionFormaPago = fp.Descripcion;

                var contacto           = proxy.CheckExistAndActivo <Contacto>(request.IdContacto, f => f.Nombre);
                request.NombreContacto = contacto.Nombre;

                var ciudad           = CheckCiudad(proxy, request);
                request.NombreCiudad = ciudad.Nombre;
                request.CodigoCiudad = ciudad.Codigo;

                var cliente           = proxy.CheckExistAndActivo <Cliente>(contacto.IdCliente, f => f.Nombre);
                request.NitCliente    = cliente.Nit;
                request.NombreCliente = cliente.Nombre;

                using (proxy.AcquireLock(Consecutivo.GetLockKey(BL.Cotizacion), BL.LockSeconds))
                {
                    proxy.BeginDbTransaction();
                    request.Consecutivo = proxy.GetNext(BL.Cotizacion).Valor;
                    proxy.Create(request);
                    proxy.CommitDbTransaction();
                }
            });

            List <Pedido> data = new List <Pedido>();

            data.Add(request);

            return(new Response <Pedido>()
            {
                Data = data
            });
        }