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); }