// // Copyright (c) 2019 openauth.me. All rights reserved. // // www.cnblogs.com/yubaolee // 2018-09-06 // 流程实例控制器 using System; using System.Collections.Generic; using System.Threading.Tasks; using Infrastructure; using Microsoft.AspNetCore.Mvc; using OpenAuth.App; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.Repository.Domain; namespace OpenAuth.WebApi.Controllers { /// /// 流程实例 /// [Route("api/[controller]/[action]")] [ApiController] public class FlowInstancesController : ControllerBase { private readonly FlowInstanceApp _app; [HttpGet] public Response Get(string id) { var result = new Response(); try { var flowinstance = _app.Get(id); result.Result = flowinstance.MapTo(); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 获取一个流程实例的操作历史记录 /// [HttpGet] public Response> QueryHistories([FromQuery]QueryFlowInstanceHistoryReq request) { var result = new Response>(); try { result.Result= _app.QueryHistories(request); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// 创建一个新的流程实例 /// www.cnblogs.com/yubaolee, 2019-03-06. [HttpPost] public Response Add([FromBody]AddFlowInstanceReq obj) { var result = new Response(); try { _app.CreateInstance(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } //添加或修改 [HttpPost] public Response Update(FlowInstance obj) { var result = new Response(); try { _app.Update(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 流程节点审批 /// /// [HttpPost] public Response Verification(VerificationReq request) { var response = new Response(); try { _app.Verification(request); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 加载列表 /// [HttpGet] public async Task Load([FromQuery]QueryFlowInstanceListReq request) { return await _app.Load(request); } [HttpPost] public Response Delete([FromBody]string[] ids) { var result = new Response(); try { _app.Delete(ids); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } public FlowInstancesController(FlowInstanceApp app) { _app = app; } } }