using HiTeachCE.Models;
using HiTeachCE.Services;
using IdentityModel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Org.BouncyCastle.Ocsp;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
using TEAMModelOS.SDK.Extension.DataResult.RequestData;
namespace HiTeachCE.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class OrganizationController:BaseController
{
public OrganizationService organizationService;
public MemberService memberService;
public LecturerService lecturerService;
public OrganizationController(OrganizationService organization , MemberService member, LecturerService lecturer) {
organizationService = organization;
memberService = member;
lecturerService = lecturer;
}
///
/// 获取组织列表
///
///
///
[HttpPost("list")]
[Authorize(Roles = "root")]
public BaseJosnRPCResponse List(PaginationJosnRPCRequest> request)
{
// request.@params.TryAdd("PartitionKey", request.lang);
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
List lecturers = new List();
Expression> linq = null;
if (request.@params.data.TryGetValue("code", out string code) && !string.IsNullOrEmpty(code))
{
linq = m => m.code == code;
}
if (request.@params.data.TryGetValue("name", out string name) && !string.IsNullOrEmpty(name))
{
linq = m => m.name.Contains(name);
}
if (request.@params.data.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
{
linq = m => m.id == id;
}
if (linq != null)
{
lecturers = organizationService.GetPageList(linq,request.@params.page);
}
return builder.Data(lecturers).Page(request.@params.page).build();
}
///
/// 更新自己的组织
///
///
///
[HttpPost("updateSelf")]
[Authorize(Roles = "admin")]
public BaseJosnRPCResponse UpdateSelf(JosnRPCRequest request)
{
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
string unionid = GetLoginUser(JwtClaimTypes.Id);
Organization organization = organizationService.GetById(request.@params.id);
Expression> mlinq = null;
mlinq = m => m.orgCode == request.@params.code && m.unionid == unionid;
List members = memberService.GetList(mlinq);
bool b = false;
//确保更新的是自己
if (members.IsNotEmpty() && members[0].role.Equals("admin"))
{
b = updateOrganization(request, organization);
}
return builder.Data(b).build();
}
public bool updateOrganization(JosnRPCRequest request ,Organization organization) {
request.@params.code = organization.code;
request.@params.type = organization.type;
bool b = organizationService.Update(request.@params);
return b;
}
///
/// 更新组织
///
///
///
[HttpPost("update")]
[Authorize(Roles = "root")]
public BaseJosnRPCResponse Update(JosnRPCRequest request)
{
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
Organization organization = organizationService.GetById(request.@params.id);
bool b = false;
//确保更新的是自己
if (organization!=null)
{
b = updateOrganization(request, organization);
}
return builder.Data(b).build();
}
///
/// 更新组织
///
///
///
[HttpPost("add")]
[Authorize(Roles = "root")]
public BaseJosnRPCResponse Add(JosnRPCRequest request)
{
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
string adminCellphone = "";
lecturerService.GetList();
return builder.Data(null).build();
}
public class OrgDto{
[Required(ErrorMessage = "组织名称必须填写")]
public string orgName { get; set; }
[Required(ErrorMessage = "组织类型必须填写")]
public string orgType { get; set; }
[Required(ErrorMessage = "组织管理员手机号必须填写")]
public string adminCellphone { get; set; }
[Required(ErrorMessage = "授权上限必须填写")]
[Range(1, 1000, ErrorMessage = "请输入1~1000的整数")]
public int maximum { get; set; }
///
/// 时长-1 永久 ,大于0 按天计算
///
[Required(ErrorMessage = "授权时限必须填写")]
[Range(-1, 3650, ErrorMessage = "请输入-1~3650的整数")]
public int expires { get; set; }
}
}
}