Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 2
0
        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
            });
        }