public IActionResult Synchronize(SyncAccountViewModel syncViewModel)
        {
            Dictionary <string, string> syncErrors = new Dictionary <string, string>();

            if (repository.TrySyncPositions(syncViewModel, syncErrors))
            {
                return(RedirectToAction("InitializeAccTeam", ACC_MANAGER, new { accountId = CurrentAccount.Id }));
            }

            ModelStateDictionary modelState = ModelState;

            foreach (KeyValuePair <string, string> syncError in syncErrors)
            {
                modelState.AddModelError(syncError.Key, syncError.Value);
            }
            return(BadRequest(modelState));
        }
        /// <summary>
        /// Метод пытается синхронизовать команду по клиенту, и, в случае ошибок, возвращает их
        /// </summary>
        /// <param name="syncViewModel"></param>
        /// <param name="syncErrors"></param>
        /// <returns></returns>
        public bool TrySyncPositions(SyncAccountViewModel syncViewModel, Dictionary <string, string> syncErrors)
        {
            if (!accountRepository.TryGetItemById(syncViewModel.AccountId, out Account account))
            {
                syncErrors.Add("SyncManagersException", resManager.GetString("SyncManagersException"));
                return(false);
            }

            if (string.IsNullOrEmpty(syncViewModel.PrimaryManagerId) || !Guid.TryParse(syncViewModel.PrimaryManagerId, out Guid primaryManagerId))
            {
                syncErrors.Add("SyncManagersException", resManager.GetString("SyncManagersException"));
                return(false);
            }

            SetUpPrimaryManager(primaryManagerId, account);

            if (syncViewModel.ManagersToAdd.Count == 0 && syncViewModel.ManagersToRemove.Count == 0)
            {
                context.SaveChanges();
                return(true);
            }

            foreach (string managerToAddId in syncViewModel.ManagersToAdd)
            {
                if (!TryAddManagerToTeam(account, managerToAddId, ref syncErrors))
                {
                    return(false);
                }
            }

            foreach (string managerToRemoveId in syncViewModel.ManagersToRemove)
            {
                if (!TryRemoveManagerFromTeam(account, managerToRemoveId, ref syncErrors))
                {
                    return(false);
                }
            }

            context.SaveChanges();
            return(true);
        }