Exemplo n.º 1
0
        public async Task <IActionResult> AsignarUbicacion(InventarioForAssingment inventarioGeneral)
        {
            var createdInventario = await _repoInventario.AssignarUbicacion(inventarioGeneral);

            return(Ok(createdInventario));
        }
        public async Task <long> AssignarUbicacion(InventarioForAssingment command)
        {
            string            query             = "";
            InventarioGeneral dominio           = null;
            Ubicacion         dominio_ubicacion = null;

            //Ubicacion dominio_ubicacionanterior = null;

            dominio_ubicacion = await _context.Ubicacion.SingleOrDefaultAsync(x => x.Id == command.UbicacionId);



            if (command.Id.Split(',').Length > 0)
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    //Ver nivel de ocupabilidad;
                    query = string.Format("update inventario.invlod"
                                          + " set UbicacionProxId = '{0}' "
                                          + " where id in ({1}) Select * from inventario.invlod where id in ({1}) ",
                                          command.UbicacionId.ToString(), command.Id);

                    try
                    {
                        var resp = _context.InvLod
                                   .FromSql(query)
                                   .ToList();

                        dominio_ubicacion.EstadoId = 17; //Parcial
                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                    return(command.UbicacionId);
                }
            }
            else
            {
                dominio = await _context.InventarioGeneral.SingleOrDefaultAsync(x => x.Id == Convert.ToInt64(command.Id));

                // if(dominio.UbicacionIdProx != null)
                // {
                //     dominio_ubicacionanterior =  await _context.Ubicacion.SingleOrDefaultAsync(x=>x.Id == dominio.UbicacionIdProx);
                //     dominio_ubicacionanterior.EstadoId = 10;// Liberarlo
                // }
                using (var transaction = _context.Database.BeginTransaction())
                {
                    dominio_ubicacion.EstadoId = 11;     //Separarlo
                    // dominio.UbicacionIdProx = command.UbicacionId;
                    try
                    {
                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                    return(dominio.Id);
                }
            }
        }