/// <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); }
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" })); } }