示例#1
0
        public virtual async Task <GetOneResult <TEntity> > GetById(int id)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var entitie = await Db.Set <TEntity>().FindAsync(id);

                result.Entity     = entitie;
                result.Success    = true;
                result.Message    = "OK";
                result.StatusCode = 200;
                result.Exception  = null;
            }
            catch (Exception ex)
            {
                result.Entity     = null;
                result.Success    = false;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }

            return(result);
        }
        public async Task <GetOneResult <PersonelMainRole> > GetPersonelRoles(string id)
        {
            var result = new GetOneResult <PersonelMainRole>();

            try
            {
                var roles = _roleManager.Roles != null?_roleManager.Roles.ToList() : null;

                var personel = await _personelDataAccess.GetByIdAsync(id, "guid");

                var personelRoles = personel != null && personel.Entity != null &&
                                    personel.Entity.Roles != null?
                                    personel.Entity.Roles.Select(x => new PersonelRoles
                {
                    Id   = x.ToString(),
                    Name = roles.FirstOrDefault(y => y.Id == x).Name
                }).ToList() : null;

                result.Entity = new PersonelMainRole
                {
                    Roles            = roles,
                    PersonelRoleList = personelRoles
                };
                result.Success = true;
            }
            catch (Exception ex)
            {
                result.Entity  = null;
                result.Success = false;
            }
            return(result);
        }
示例#3
0
        public async Task <GetOneResult <TEntity> > ReplaceOneAsync(string id, TEntity entity, string type = "object")
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                object objectId = null;
                if (type == "guid")
                {
                    objectId = Guid.Parse(id);
                }
                else
                {
                    objectId = ObjectId.Parse(id);
                }

                var filter = Builders <TEntity> .Filter.Eq("_id", objectId);

                var updatedDocument = await _collection.ReplaceOneAsync(filter, entity);

                result.Entity = entity;
            }
            catch (Exception ex)
            {
                result.Message = $"ReplaceOne {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
        public ApiResult(OperationResult result)
        {
            string typeResult = result.GetType().Name;

            if (typeResult.Contains("GetOneResult"))
            {
                GetOneResult <TResponse> oneResult = (GetOneResult <TResponse>)result;
                if (oneResult != null && oneResult.Entity != null)
                {
                    this.Response = new List <TResponse>()
                    {
                        oneResult.Entity
                    }
                }
                ;
            }
            else if (typeResult.Contains("GetManyResult"))
            {
                GetManyResult <TResponse> manyResult = (GetManyResult <TResponse>)result;
                if (manyResult != null && manyResult.Entities != null)
                {
                    this.Response = manyResult.Entities;
                }
            }

            this.Message    = result.Message;
            this.StatusCode = result.StatusCode;
        }
示例#5
0
        public async Task <GetOneResult <TEntity> > GetByIdAsync(string id, string type = "object")
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                object objectId = null;
                if (type == "guid")
                {
                    objectId = Guid.Parse(id);
                }
                else
                {
                    objectId = ObjectId.Parse(id);
                }

                var filter = Builders <TEntity> .Filter.Eq("_id", objectId);

                var data = await _collection.Find(filter).FirstOrDefaultAsync();

                if (data != null)
                {
                    result.Entity = data;
                }
            }
            catch (Exception ex)
            {
                result.Message = $"GetById {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
示例#6
0
        public async Task <JsonResult> CreateRoom(RoomUser user)
        {
            var result = new GetOneResult <Room>();

            if (ModelState.IsValid)
            {
                result = await roomService.CreateRoom(user);
            }
            return(Json(result));
        }
示例#7
0
        public Task <GetOneResult <WechatInfo> > GetWechatInfo(string unionId)
        {
            GetOneResult <WechatInfo> result = new GetOneResult <WechatInfo>()
            {
                Message = "找不到该用户"
            };
            var entity = StorageService.UserAuthData.SingleOrDefault(e => e.OpenId == unionId);

            if (entity != null)
            {
                result.Entity  = entity;
                result.Status  = 200;
                result.Success = true;
            }
            return(Task.FromResult(result));
        }
示例#8
0
        public Task <GetOneResult <RoomUser> > GetUser(string unionId)
        {
            GetOneResult <RoomUser> result = new GetOneResult <RoomUser>()
            {
                Message = "找不到该用户"
            };
            var entity = StorageService.RegisteredUsers.SingleOrDefault(u => u.OpenId == unionId);

            if (entity != null)
            {
                result.Entity  = entity;
                result.Status  = 200;
                result.Success = true;
            }
            return(Task.FromResult(result));
        }
示例#9
0
        public GetOneResult <TEntity> InsertOne(TEntity entity)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                _collection.InsertOne(entity);
                result.Entity = entity;
            }
            catch (Exception ex)
            {
                result.Message = $"InsertOne {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
示例#10
0
        public GetOneResult <TEntity> DeleteOne(Expression <Func <TEntity, bool> > filter)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var deletedDocument = _collection.FindOneAndDelete(filter);
                result.Entity = deletedDocument;
            }
            catch (Exception ex)
            {
                result.Message = $"DeleteOne {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
示例#11
0
        public virtual async Task <GetOneResult <TEntity> > GetById(int id)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var response = await _repository.GetById(id);

                if (response.Success)
                {
                    if (response.Entity == null)
                    {
                        result.Message    = "Not Found";
                        result.StatusCode = 404;
                    }
                    else
                    {
                        result.Message    = "OK";
                        result.StatusCode = 200;
                    }

                    result.Entity     = response.Entity;
                    result.StatusCode = response.StatusCode == 400 ? 400 : response.StatusCode;
                    result.Exception  = response.Exception ?? null;
                }
                else
                {
                    result.Entity     = null;
                    result.Success    = false;
                    result.Message    = "Bad Request";
                    result.StatusCode = 400;
                    result.Exception  = null;
                }
            }
            catch (Exception ex)
            {
                result.Entity     = null;
                result.Success    = false;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }

            return(result);
        }
示例#12
0
        public async Task <GetOneResult <TEntity> > InsertOneAsync(TEntity entity)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                await _collection.InsertOneAsync(entity);

                result.Entity = entity;
            }
            catch (Exception ex)
            {
                result.Message = $"GetById {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
示例#13
0
        public Task <GetOneResult <Room> > CreateRoom(RoomUser user)
        {
            var result = new GetOneResult <Room>();

            if (!string.IsNullOrWhiteSpace(user.OpenId))
            {
                var room = new Room();
                room.RoomId     = GenerateRoomId();
                room.RoomLeader = user.UserName;
                room.LeaderId   = user.OpenId;
                room.Users.Add(user);
                StorageService.RoomList.Add(room);
                result.Success = true;
                result.Status  = 200;
                result.Entity  = room;
            }

            return(Task.FromResult(result));
        }
示例#14
0
        /// <summary>
        /// GetAndUpdateOne with filter
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="filter"></param>
        /// <param name="update"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public async Task <GetOneResult <TEntity> > GetAndUpdateOne <TEntity>(FilterDefinition <TEntity> filter, UpdateDefinition <TEntity> update, FindOneAndUpdateOptions <TEntity, TEntity> options) where TEntity : class, new()
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var collection = GetCollection <TEntity>();
                result.Entity = await collection.FindOneAndUpdateAsync(filter, update, options);

                result.Success = true;
                result.Message = "OK";
                return(result);
            }
            catch (Exception ex)
            {
                result.Message = HelperService.NotifyException("GetAndUpdateOne", "Exception getting and updating entity: " + typeof(TEntity).Name, ex);
                return(result);
            }
        }
示例#15
0
        /// <summary>
        /// A generic GetOne method
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <GetOneResult <TEntity> > GetOne <TEntity>(FilterDefinition <TEntity> filter) where TEntity : class, new()
        {
            var res = new GetOneResult <TEntity>();

            try
            {
                var collection = GetCollection <TEntity>();
                var entity     = await collection.Find(filter).SingleOrDefaultAsync();

                if (entity != null)
                {
                    res.Entity = entity;
                }
                res.Success = true;
                return(res);
            }
            catch (Exception ex)
            {
                res.Message = HelperService.NotifyException("GetOne", "Exception getting one " + typeof(TEntity).Name, ex);
                return(res);
            }
        }
示例#16
0
        /// <summary>
        /// GetAndUpdateOne with filter
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="filter"></param>
        /// <param name="update"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public async Task <GetOneResult <TEntity> > GetAndUpdateOne(FilterDefinition <TEntity> filter, UpdateDefinition <TEntity> update, FindOneAndUpdateOptions <TEntity, TEntity> options)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                throw new Exception("TimeStamps are not implemented, please implement them first");

                var collection = GetCollection();
                result.Entity = await collection.FindOneAndUpdateAsync(filter, update, options);

                result.Success = true;
                result.Message = "OK";

                return(result);
            }
            catch (Exception ex)
            {
                result.Message = HelperService.NotifyException("GetAndUpdateOne", "Exception getting and updating entity: " + typeof(TEntity).Name, ex);
                return(result);
            }
        }
示例#17
0
        public GetOneResult <TEntity> DeleteById(string id)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var objectId = ObjectId.Parse(id);
                var filter   = Builders <TEntity> .Filter.Eq("_id", objectId);

                var data = _collection.FindOneAndDelete(filter);
                if (data != null)
                {
                    result.Entity = data;
                }
            }
            catch (Exception ex)
            {
                result.Message = $"DeleteById {ex.Message}";
                result.Success = false;
                result.Entity  = null;
            }
            return(result);
        }
示例#18
0
        public virtual async Task <GetOneResult <TEntity> > Add(TEntity obj)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                Db.Set <TEntity>().Add(obj);
                int entriesWritten = await Db.SaveChangesAsync();

                if (entriesWritten >= 1)
                {
                    result.Entity     = obj;
                    result.Success    = true;
                    result.Message    = "Created";
                    result.StatusCode = 201;
                    result.Exception  = null;
                }
                else
                {
                    result.Entity     = null;
                    result.Success    = false;
                    result.Message    = "Bad Request";
                    result.StatusCode = 400;
                    result.Exception  = null;
                }
            }
            catch (Exception ex)
            {
                result.Entity     = null;
                result.Success    = false;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }

            return(result);
        }
示例#19
0
        public async Task <JsonResult> Post([FromBody] TModel model)
        {
            var result = new GetOneResult <TModel>();

            try
            {
                var domain = Mapper.Map <TModel, TEntity>(model);

                var response = await((IGenericService <TEntity>)_service).Add(domain);

                if (response.Success)
                {
                    result.Success    = true;
                    result.Entity     = Mapper.Map <TEntity, TModel>(response.Entity);
                    result.Message    = "Created";
                    result.StatusCode = 201;
                    result.Exception  = null;
                }
                else
                {
                    result.Success    = false;
                    result.Entity     = response.Entity == null ? null : Mapper.Map <TEntity, TModel>(response.Entity);
                    result.Message    = response.Message ?? null;
                    result.StatusCode = response.StatusCode;
                    result.Exception  = response.Exception ?? null;
                }
            }
            catch (Exception ex)
            {
                result.Success    = false;
                result.Entity     = null;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }
            return(Json(result));
        }
示例#20
0
        public virtual async Task <GetOneResult <TEntity> > Add(TEntity obj)
        {
            var result = new GetOneResult <TEntity>();

            try
            {
                var response = await _repository.Add(obj);

                if (response.Success)
                {
                    result.Entity     = obj;
                    result.Success    = true;
                    result.Message    = "Created";
                    result.StatusCode = 201;
                    result.Exception  = null;
                }
                else
                {
                    result.Entity     = null;
                    result.Success    = false;
                    result.Message    = response.Message == "Bad Request" ? "Bad Request" : response.Message;
                    result.StatusCode = response.StatusCode == 400 ? 400 : response.StatusCode;
                    result.Exception  = response.Exception ?? null;
                }
            }
            catch (Exception ex)
            {
                result.Entity     = null;
                result.Success    = false;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }

            return(result);
        }
示例#21
0
        public async Task <JsonResult> GetById(int id)
        {
            var result = new GetOneResult <TModel>();

            try
            {
                var response = await((IGenericService <TEntity>)_service).GetById(id);

                if (response.Success)
                {
                    result.Success    = response.Success;
                    result.Entity     = Mapper.Map <TEntity, TModel>(response.Entity);
                    result.Message    = response.Message;
                    result.StatusCode = response.StatusCode;
                    result.Exception  = null;
                }
                else
                {
                    result.Success    = false;
                    result.Entity     = response.Entity == null ? null : Mapper.Map <TEntity, TModel>(response.Entity);
                    result.Message    = response.Message ?? null;
                    result.StatusCode = response.StatusCode;
                    result.Exception  = response.Exception ?? null;
                }
            }
            catch (Exception ex)
            {
                result.Entity     = null;
                result.Success    = false;
                result.Message    = ex.Message;
                result.StatusCode = 500;
                result.Exception  = ex;
            }

            return(Json(result));
        }
        public virtual async Task <GetOneResult <TEntity> > GetById(int id)
        {
            GetOneResult <TEntity> response = null;

            try
            {
                var result = await _repository.GetById(id);

                if (result != null)
                {
                    response = new GetOneResult <TEntity>(result, true, null, System.Net.HttpStatusCode.OK, null);
                }
                else
                {
                    response = new GetOneResult <TEntity>(result, false, "Loja não encontrada com o identificador informado", System.Net.HttpStatusCode.NotFound, null);
                }
            }
            catch (System.Exception ex)
            {
                response = new GetOneResult <TEntity>(null, false, null, System.Net.HttpStatusCode.BadRequest, ex);
            }

            return(response);
        }