Ejemplo n.º 1
0
        public async Task <ActionResult> Edit(ColeccionPIVViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.ClientesId == null)
                {
                    model.ClientesId = new List <string>();
                }

                var currentClientes = await db.Clientes
                                      .Where(cc => cc.ColeccionPIVId == model.ColeccionPIV.Id)
                                      .ToListAsync();

                var currentClientesId = currentClientes.Select(cc => cc.ClienteID).ToArray();
                var clientesIdToAdd   = model.ClientesId.Where(id => !currentClientesId.Contains(id)).ToArray();

                var clientesToDelete = currentClientes.Where(c => !model.ClientesId.Contains(c.ClienteID)).ToList();
                var clientesToAdd    = await db.Clientes.Where(c => clientesIdToAdd.Contains(c.ClienteID)).ToListAsync();

                foreach (var cliente in clientesToDelete)
                {
                    cliente.ColeccionPIVId  = null;
                    db.Entry(cliente).State = EntityState.Modified;
                }

                foreach (var cliente in clientesToAdd)
                {
                    cliente.ColeccionPIVId  = model.ColeccionPIV.Id;
                    db.Entry(cliente).State = EntityState.Modified;
                }

                db.Entry(model.ColeccionPIV).State = EntityState.Modified;
                await db.SaveChangesAsync();

                AddLog("", model.ColeccionPIV.Id, model);

                return(RedirectToAction("Index", GetReturnSearch()));
            }
            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Create(ColeccionPIVViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.ClientesId != null)
                {
                    var clientes = await db.Clientes.Where(c => model.ClientesId.Contains(c.ClienteID)).ToListAsync();

                    foreach (var cliente in clientes)
                    {
                        cliente.ColeccionPIVId  = model.ColeccionPIV.Id;
                        db.Entry(cliente).State = EntityState.Modified;
                    }
                }

                db.ColeccionPIV.Add(model.ColeccionPIV);
                await db.SaveChangesAsync();

                AddLog("", model.ColeccionPIV.Id, model);

                return(RedirectToAction("Index", GetReturnSearch()));
            }
            return(View(model));
        }