Ejemplo n.º 1
0
        /// <summary>This method changes the point's location by
        ///    the given x- and y-offsets.
        /// <example>For example:
        /// <code>
        ///    Point p = new Point(3,5);
        ///    p.Translate(-1,3);
        /// </code>
        /// results in <c>p</c>'s having the value (2,8).
        /// </example>
        /// </summary>
        public async Task <IEnumerable <Movimientos> > organizar(Organizable o)
        {
            //por cada uno de los elementos en el tunel;

            List <Movimientos> r = new List <Movimientos>();

            var q = await _context.VPosicionesActual
                    .AsQueryable()
                    .Where(p => p.Columna == o.Columna)
                    .Where(p => p.Nivel == o.Nivel).ToListAsync();

            foreach (var item in q.ToArray())
            {
                Movimientos salida = new Movimientos();
                salida.Sentido    = -1;
                salida.Nivel      = item.Nivel;
                salida.Columna    = item.Columna;
                salida.Posicion   = item.Posicion;
                salida.PaquetesId = item.PaquetesId;
                salida.Fecha      = DateTime.Now;

                Movimientos reingreso = new Movimientos();
                reingreso.Sentido    = 1;
                reingreso.Nivel      = item.Nivel;
                reingreso.Columna    = item.Columna;
                reingreso.Posicion   = item.Posicion + o.EspaciosVacios;
                reingreso.PaquetesId = item.PaquetesId;
                reingreso.Fecha      = DateTime.Now.AddSeconds(1);

                r.Add(salida);
                r.Add(reingreso);
            }
            return(r);
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <object> > organizar([FromBody] Organizable o)
        {
            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var l = await _bodega4.organizar(o);

                    var largo = l.ToArray().Length;

                    l.Select(p =>
                    {
                        _context.Movimientos.Add(p);
                        _context.SaveChanges();
                        return(1);
                    })
                    .Aggregate((t, n) => {
                        t = t + n;
                        if (t == largo)
                        {
                            dbContextTransaction.Commit();
                        }
                        return(t);
                    });
                }
                catch (Exception e)
                {
                    dbContextTransaction.Rollback();
                    return(StatusCode(500, new { mensaje = "Ocurrió un error al realizar el movimiento: " + e.Message, Status = "ERR" }));
                }
                return(Ok(new { mensaje = "El tunel ha sido organizado", Status = "OK" }));
            }
        }