public async Task <ManagerCoreModel> AddAsync(ManagerCoreModel manager)
        {
            Locker.EnterWriteLock();
            try
            {
                if (await Managers.TryAddUniqueManagerAsync(manager).ConfigureAwait(false))
                {
                    await Managers.SaveAsync().ConfigureAwait(false);

                    return(await GetAsync(await Managers.GetIdAsync(manager.LastName)
                                          .ConfigureAwait(false)).ConfigureAwait(false));
                }
                else
                {
                    throw new ArgumentException("Manager already exists!");
                }
            }
            finally
            {
                if (Locker.IsWriteLockHeld)
                {
                    Locker.ExitWriteLock();
                }
            }
        }
        public async Task <ManagerCoreModel> UpdateAsync(ManagerCoreModel manager)
        {
            Locker.EnterWriteLock();
            try
            {
                if (await Managers.DoesManagerExistAsync(manager).ConfigureAwait(false))
                {
                    throw new ArgumentException("Manager already exists!");
                }

                var result = Managers.Update(manager);
                await Managers.SaveAsync().ConfigureAwait(false);

                return(result);
            }
            finally
            {
                if (Locker.IsWriteLockHeld)
                {
                    Locker.ExitWriteLock();
                }
            }
        }
 public async Task <ManagerCoreModel> UpdateAsync(ManagerCoreModel model)
 {
     return(await ManagerDbReaderWriter.UpdateAsync(model).ConfigureAwait(false));
 }