public async Task <IActionResult> SendAdminRequest([FromBody] SendAdminRequestModel model) { var topicId = XUtils.ParseId(model.TopicId); // Topic is group topic var topic = await Context.Topics.FirstOrDefaultAsync(p => p.Id == topicId); if (topic == null) { return(new ApiError(MyErrorCode.IdNotFound, "Topic id not found").Wrap()); } if (topic.IsGroup == false) { return(new ApiError(MyErrorCode.TypeMismatch, "This topic is not group").Wrap()); } // should be normal member var member = await Context.TopicMembers.FirstOrDefaultAsync(p => p.TopicId == topicId && p.UserId == AuthStore.UserId); if (member?.Role != MemberRole.Normal) { return(new ApiError(MyErrorCode.RoleMismatch, "You are not normal row of the topic").Wrap()); } // unhandled request exist? var previous = await Context.AdminRequests.FirstOrDefaultAsync( p => p.TopicId == topicId && p.SenderId == AuthStore.UserId && p.Status == RequestStatus.Unhandled); if (previous != null) { return(new ApiError(MyErrorCode.ExistUnhandledReuqest, "你已经发送过请求,但未被处理").Wrap()); } // send request var request = new AdminRequest(topicId.Value, AuthStore.UserId.Value, model.Text); await Context.AddAsync(request); await Context.GoAsync(); return(Ok(new IdResponse(request.Id))); }
/// <summary> /// /// </summary> /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="sendAdminRequestModel"> (optional)</param> /// <returns>Task of ApiResponse (IdResponse)</returns> public async System.Threading.Tasks.Task <Org.OpenAPITools.Client.ApiResponse <IdResponse> > SendAdminRequestAsyncWithHttpInfo(SendAdminRequestModel sendAdminRequestModel = default(SendAdminRequestModel)) { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); String[] _contentTypes = new String[] { "application/json" }; // to determine the Accept header String[] _accepts = new String[] { "text/plain", "application/json", "text/json" }; foreach (var _contentType in _contentTypes) { localVarRequestOptions.HeaderParameters.Add("Content-Type", _contentType); } foreach (var _accept in _accepts) { localVarRequestOptions.HeaderParameters.Add("Accept", _accept); } localVarRequestOptions.Data = sendAdminRequestModel; // make the HTTP request var localVarResponse = await this.AsynchronousClient.PostAsync <IdResponse>("/api/group-management/send-admin-request", localVarRequestOptions, this.Configuration); if (this.ExceptionFactory != null) { Exception _exception = this.ExceptionFactory("SendAdminRequest", localVarResponse); if (_exception != null) { throw _exception; } } return(localVarResponse); }
/// <summary> /// /// </summary> /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="sendAdminRequestModel"> (optional)</param> /// <returns>ApiResponse of IdResponse</returns> public Org.OpenAPITools.Client.ApiResponse <IdResponse> SendAdminRequestWithHttpInfo(SendAdminRequestModel sendAdminRequestModel = default(SendAdminRequestModel)) { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); String[] _contentTypes = new String[] { "application/json" }; // to determine the Accept header String[] _accepts = new String[] { "text/plain", "application/json", "text/json" }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); if (localVarContentType != null) { localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); } var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); if (localVarAccept != null) { localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); } localVarRequestOptions.Data = sendAdminRequestModel; // make the HTTP request var localVarResponse = this.Client.Post <IdResponse>("/api/group-management/send-admin-request", localVarRequestOptions, this.Configuration); if (this.ExceptionFactory != null) { Exception _exception = this.ExceptionFactory("SendAdminRequest", localVarResponse); if (_exception != null) { throw _exception; } } return(localVarResponse); }
/// <summary> /// /// </summary> /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="sendAdminRequestModel"> (optional)</param> /// <returns>Task of IdResponse</returns> public async System.Threading.Tasks.Task <IdResponse> SendAdminRequestAsync(SendAdminRequestModel sendAdminRequestModel = default(SendAdminRequestModel)) { Org.OpenAPITools.Client.ApiResponse <IdResponse> localVarResponse = await SendAdminRequestAsyncWithHttpInfo(sendAdminRequestModel); return(localVarResponse.Data); }
/// <summary> /// /// </summary> /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="sendAdminRequestModel"> (optional)</param> /// <returns>IdResponse</returns> public IdResponse SendAdminRequest(SendAdminRequestModel sendAdminRequestModel = default(SendAdminRequestModel)) { Org.OpenAPITools.Client.ApiResponse <IdResponse> localVarResponse = SendAdminRequestWithHttpInfo(sendAdminRequestModel); return(localVarResponse.Data); }