public async Task <ChangedInformationResultModel> DeleteСommunicationAsync(string username, string interectedUserName) { if ((await _userManager.FindByNameAsync(username) == null) || (await _userManager.FindByNameAsync(interectedUserName) == null)) { return(new ChangedInformationResultModel { Success = false, ErrorsMessages = new[] { "User does not exist" } }); } var pk1 = username + interectedUserName; //костыль! var pk2 = interectedUserName + username; //костыль! var isContain = await _dataContext.interectedUsers.AsNoTracking().SingleOrDefaultAsync(x => x.EntryHash == pk1); if (isContain != null) { var model1 = new InterectedUserModel { UserName = username, InterectedUserName = interectedUserName, EntryHash = pk1 }; var model2 = new InterectedUserModel { UserName = interectedUserName, InterectedUserName = username, EntryHash = pk2 }; _dataContext.interectedUsers.Remove(model1); _dataContext.interectedUsers.Remove(model2); } else { return(new ChangedInformationResultModel { Success = false, ErrorsMessages = new[] { "Сommunication does not exist" } }); } await _dataContext.SaveChangesAsync(); return(new ChangedInformationResultModel { Success = true }); }
public async Task <ChangedInformationResultModel> AddСommunicationsBtwUsersAsync(string username, string[] interectedUsersName) { if (await _userManager.FindByNameAsync(username) == null) { return(new ChangedInformationResultModel { Success = false, ErrorsMessages = new[] { $"User '{username}' does not exist" } }); } List <InterectedUserModel> models = new List <InterectedUserModel>(); List <string> errors = new List <string>(); foreach (var element in interectedUsersName) { var existUser = await _userManager.FindByNameAsync(element); //To do: add cheking element !=null if (existUser != null && element != username) { var pk1 = element + username; //костыль! var pk2 = username + element; //костыль! var isContain = await _dataContext.interectedUsers.SingleOrDefaultAsync(x => x.EntryHash == pk1); if (isContain == null) { var newCommunication1 = new InterectedUserModel { UserName = username, InterectedUserName = element, EntryHash = pk1 }; var newCommunication2 = new InterectedUserModel { UserName = element, InterectedUserName = username, EntryHash = pk2 }; models.Add(newCommunication1); models.Add(newCommunication2); } else { errors.Add($"Pair {username}:{element} / {element}:{username} already exist"); } } else { if (existUser == null) { errors.Add($"User '{element}' does not exist"); } else { errors.Add($"The specified user names {username}:{element} match"); } } } if (models.Count > 0) { await _dataContext.interectedUsers.AddRangeAsync(models); await _dataContext.SaveChangesAsync(); } if (models.Count == 0) { return(new ChangedInformationResultModel { ErrorsMessages = errors, Success = false }); } if (models.Count > 0 && models.Count < interectedUsersName.Length) { return(new ChangedInformationResultModel { ErrorsMessages = errors, Success = true }); } return(new ChangedInformationResultModel { Success = true }); }