94 lines
3.4 KiB
C#
94 lines
3.4 KiB
C#
using _0_Framework.Application;
|
|
using CompanyManagment.App.Contracts.FinancialStatment;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using ServiceHost.BaseControllers;
|
|
|
|
namespace ServiceHost.Areas.Client.Controllers;
|
|
|
|
public record GetClientProfileDetails(long Id, string Fullname, string Mobile,
|
|
List<int> Permissions, List<WorkshopClaim> Workshops,
|
|
string WorkshopSlug, double DebtAmount,UserType UserType,bool HasRollCallService,bool HasCustomizeCheckout);
|
|
|
|
public class LoginController : ClientBaseController
|
|
{
|
|
private readonly IAuthHelper _authHelper;
|
|
private readonly IFinancialStatmentApplication _financialStatmentApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
|
|
public LoginController(IAuthHelper authHelper, IFinancialStatmentApplication financialStatmentApplication, IRollCallServiceApplication rollCallServiceApplication)
|
|
{
|
|
_authHelper = authHelper;
|
|
_financialStatmentApplication = financialStatmentApplication;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
}
|
|
/// <summary>
|
|
/// جزئیات پروفایل کاربر کلاینت را برمی گرداند
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("Profile")]
|
|
public async Task<ActionResult<GetClientProfileDetails>> GetProfile()
|
|
{
|
|
if (!_authHelper.IsAuthenticated())
|
|
return Unauthorized();
|
|
var data = _authHelper.CurrentAccountInfo();
|
|
|
|
if (data == null)
|
|
return Unauthorized();
|
|
|
|
var userTypeWithId = _authHelper.GetUserTypeWithId();
|
|
if (userTypeWithId.userType is not UserType.Client and not UserType.SubAccount)
|
|
return Unauthorized();
|
|
|
|
var debtAmount = await _financialStatmentApplication.GetClientDebtAmount(data.Id);
|
|
|
|
var rollCallService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(_authHelper.GetWorkshopId());
|
|
var hasRollCallService = rollCallService != null;
|
|
var hasCustomizeCheckout = rollCallService?.HasCustomizeCheckoutService=="true";
|
|
|
|
|
|
var details = new GetClientProfileDetails(
|
|
data.Id,
|
|
data.Fullname,
|
|
data.Mobile,
|
|
data.Permissions,
|
|
data.WorkshopList,
|
|
data.WorkshopSlug,
|
|
debtAmount,
|
|
userTypeWithId.userType,
|
|
hasRollCallService,
|
|
hasCustomizeCheckout
|
|
);
|
|
return details;
|
|
}
|
|
|
|
/// <summary>
|
|
/// انتخاب کارگاه
|
|
/// </summary>
|
|
/// <param name="slug"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("select-workshop")]
|
|
public IActionResult SelectWorkshop(string slug)
|
|
{
|
|
var selectedWorkshop = _authHelper.CurrentAccountInfo().WorkshopList.FirstOrDefault(x => x.Slug == slug);
|
|
if (selectedWorkshop != null)
|
|
{
|
|
_authHelper.UpdateWorkshopSlugClaim(selectedWorkshop.Slug, selectedWorkshop.Name, selectedWorkshop.Id);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = true,
|
|
message = "کارگاه مورد نظر شما انتخاب شد"
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاه مورد نظر شما یافت نشد"
|
|
});
|
|
}
|
|
}
|
|
} |