示例#1
0
        public override async Task <TagReply> Add(Tags.Tag request, ServerCallContext context)
        {
            var reply = new TagReply();
            var user  = await _userService.GetUser(context.GetHttpContext());

            if (user == null)
            {
                reply.Error = Error.NeedLogin;
                return(reply);
            }

            if (!user.HasWritePermission())
            {
                reply.Error = Error.NoPermission;
                return(reply);
            }

            if (string.IsNullOrWhiteSpace(request.Name))
            {
                reply.Error = Error.InvalidArguments;
                return(reply);
            }

            var existed = await _service.All().Where(i => i.Name == request.Name).FirstOrDefaultAsync();

            if (existed != null)
            {
                reply.Error = Error.EntityConflict;
                return(reply);
            }

            var newTag = await _service.Add(new Tag
                                            { Name = request.Name, Type = (int)request.Type, Values = request.Values });

            reply.Tag = Converter(newTag);
            return(reply);
        }