using _0_Framework.Application;
using CompanyManagment.App.Contracts.Law;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Admin.Controllers;
public class LawController : AdminBaseController
{
private readonly ILawApplication _lawApplication;
public LawController(ILawApplication lawApplication)
{
_lawApplication = lawApplication;
}
///
/// لیست قوانین بر اساس انواع تعریف شده در enum
///
///
[HttpGet]
public async Task>> GetList(LawSearchModel searchModel)
{
return await _lawApplication.GetList(searchModel);
}
///
/// جزئیات قانون بر اساس نوع
///
/// نوع قانون
///
[HttpGet("by-type/{type}")]
[AllowAnonymous]
public async Task> GetLawByType(LawType type)
{
return await _lawApplication.GetLawByType(type);
}
///
/// ایجاد یا ویرایش قانون بر اساس نوع
///
///
///
[HttpPut("upsert")]
public ActionResult UpsertLaw([FromBody] EditLaw command)
{
var result = _lawApplication.UpsertLaw(command);
return result;
}
///
/// فعالسازی قانون
///
/// نوع قانون
///
[HttpPatch("{type}/activate")]
public ActionResult Activate(LawType type)
{
var result = _lawApplication.ActivateByType(type);
return result;
}
///
/// غیرفعالسازی قانون
///
/// نوع قانون
///
[HttpPatch("{type}/deactivate")]
public ActionResult Deactivate(LawType type)
{
var result = _lawApplication.DeactivateByType(type);
return result;
}
}