Ejemplo n.º 1
0
        /// <summary>
        /// If user exists update fields
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <User> GetOrAdd(NewUser model)
        {
            var entity = await Store.Retrieve(model.Id);

            if (entity is Data.User)
            {
                // entity.Name = model.Name;
                // // entity.Email = model.Email;
                // // entity.Username = model.Username;
                // await Store.Update(entity);
            }
            else
            {
                entity = Mapper.Map <Data.User>(model);

                bool found = false;
                int  i     = 0;
                do
                {
                    entity.ApprovedName = _namesvc.GetRandomName();
                    entity.Name         = entity.ApprovedName;

                    // check uniqueness
                    found = await Store.DbSet.AnyAsync(p =>
                                                       p.Id != entity.Id &&
                                                       p.Name == entity.Name
                                                       );
                } while (found && i++ < 20);

                await Store.Create(entity);
            }

            _localcache.Remove(entity.Id);

            return(Mapper.Map <User>(entity));
        }