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