public void updateCollaborators(List<long> userIdsToAdd, List<long> userIdsToRemove, long periodId, long cityId) { var group = context.Groups.Include("Collaborators").Where(c => c.CityId == cityId && c.PeriodId == periodId).FirstOrDefault(); if (group != null) { //Removendo os calaboradores group.Collaborators.RemoveAll(c => userIdsToRemove.Contains(c.Id)); //Adicionando os colaboradores userIdsToAdd.ForEach(uid => { var user = context.Users.Where(u => u.Id == uid).FirstOrDefault(); if (user != null) { if (user.isEntityAccreditedAndAppoved()) { group.Collaborators.Add(user); } } }); } else { var newGroup = new Group() { CityId = cityId, PeriodId = periodId, ResponsableId = null, Collaborators = new List<User>() }; //Adicionando os colaboradores userIdsToAdd.ForEach(uid => { var user = context.Users.Where(u => u.Id == uid).FirstOrDefault(); if (user != null) { if (user.isEntityAccreditedAndAppoved()) { newGroup.Collaborators.Add(user); } } }); //Grupo não existe, cria um novo context.Groups.Add(newGroup); } context.SaveChanges(); }
/// <summary> /// Aprova a solicitação de responabilidade ou colaboração de uma determinada entidade para um município /// </summary> /// <param name="userId">Código do usuário (Entidade credenciada)</param> /// <param name="periodId">Código do Período a qual a entidade será colaborada ou responsável</param> /// <param name="cityId">Código do município</param> /// <param name="requestType">Se responsável ou colaboradora pelo município</param> public bool approveRequest(long userId, long periodId, long cityId, Enumerations.RequestType requestType) { try { var user = context.Users.Where(u => u.Id == userId).FirstOrDefault(); if (user != null) { //Verifica se a entidade é credenciada e aprovada if (user.isEntityAccreditedAndAppoved()) { if (requestType == Enumerations.RequestType.RESPONSABLE) { var group = context.Groups.Where(c => c.CityId == cityId && c.PeriodId == periodId).FirstOrDefault(); if (group != null) { //Alterando o responsável pelo o usuário group.ResponsableId = userId; } else { //Grupo não existe, cria um novo context.Groups.Add(new Group() { CityId = cityId, PeriodId = periodId, ResponsableId = userId }); } context.SaveChanges(); return true; } else if (requestType == Enumerations.RequestType.COLLABORATOR) { var group = context.Groups.Include("Collaborators").Where(c => c.CityId == cityId && c.PeriodId == periodId).FirstOrDefault(); if (group != null) { //Alterando o responsável pelo o usuário group.Collaborators.Add(user); } else { var newGroup = new Group() { CityId = cityId, PeriodId = periodId, ResponsableId = null, Collaborators = new List<User>() }; newGroup.Collaborators.Add(user); //Grupo não existe, cria um novo context.Groups.Add(newGroup); } context.SaveChanges(); return true; } } } return false; } catch (DbEntityValidationException ex) { //Adiciona na lista de erros os erros de DataAnnotation addErrorMessage(ex); } catch (Exception ex) { Log.ErrorLog.saveError("Lib.Repositories.UserRepository.approveRequest", ex); throw new Exception("Lib.Repositories.UserRepository.approveRequest - " + ex.Message, ex); } return false; }