DocSpace-client/web/ASC.Web.Api/Controllers/PortalController.cs

132 lines
4.1 KiB
C#
Raw Normal View History

2019-09-03 15:13:25 +00:00
using System;
using System.Linq;
using ASC.Api.Core;
using ASC.Common.Logging;
using ASC.Core;
using ASC.Core.Billing;
using ASC.Core.Tenants;
using ASC.Core.Users;
using ASC.MessagingSystem;
using ASC.Web.Api.Routing;
using ASC.Web.Core.Utility;
using ASC.Web.Studio.Core.Notify;
using ASC.Web.Studio.Utility;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
namespace ASC.Web.Api.Controllers
{
[DefaultRoute]
[ApiController]
public class PortalController : ControllerBase
{
public Tenant Tenant { get { return ApiContext.Tenant; } }
public ApiContext ApiContext { get; }
2019-09-09 12:56:33 +00:00
public UserManager UserManager { get; }
public AuthContext AuthContext { get; }
2019-09-03 15:13:25 +00:00
public LogManager LogManager { get; }
public MessageService MessageService { get; }
public StudioNotifyService StudioNotifyService { get; }
public IWebHostEnvironment WebHostEnvironment { get; }
public PortalController(LogManager logManager,
MessageService messageService,
StudioNotifyService studioNotifyService,
2019-09-09 12:56:33 +00:00
ApiContext apiContext,
UserManager userManager,
AuthContext authContext
)
2019-09-03 15:13:25 +00:00
{
LogManager = logManager;
MessageService = messageService;
StudioNotifyService = studioNotifyService;
ApiContext = apiContext;
2019-09-09 12:56:33 +00:00
UserManager = userManager;
AuthContext = authContext;
2019-09-03 15:13:25 +00:00
}
[Read("")]
public Tenant Get()
{
return Tenant;
}
[Read("users/{userID}")]
public UserInfo GetUser(Guid userID)
{
return UserManager.GetUsers(userID);
2019-09-03 15:13:25 +00:00
}
[Read("users/invite/{employeeType}")]
public string GeInviteLink(EmployeeType employeeType)
{
2019-09-09 12:56:33 +00:00
return CommonLinkUtility.GetConfirmationUrl(Tenant.TenantId, string.Empty, ConfirmType.LinkInvite, (int)employeeType, AuthContext.CurrentAccount.ID)
2019-09-03 15:13:25 +00:00
+ $"&emplType={employeeType:d}";
}
[Update("getshortenlink")]
public string GetShortenLink(string link)
{
try
{
return UrlShortener.Instance.GetShortenLink(link);
}
catch (Exception ex)
{
LogManager.Get("ASC.Web").Error("getshortenlink", ex);
return link;
}
}
[Read("usedspace")]
public double GetUsedSpace()
{
return Math.Round(
CoreContext.TenantManager.FindTenantQuotaRows(new TenantQuotaRowQuery(Tenant.TenantId))
.Where(q => !string.IsNullOrEmpty(q.Tag) && new Guid(q.Tag) != Guid.Empty)
.Sum(q => q.Counter) / 1024f / 1024f / 1024f, 2);
}
[Read("userscount")]
public long GetUsersCount()
{
return UserManager.GetUserNames(EmployeeStatus.Active).Count();
2019-09-03 15:13:25 +00:00
}
[Read("tariff")]
public Tariff GetTariff()
{
return CoreContext.PaymentManager.GetTariff(Tenant.TenantId);
}
[Read("quota")]
public TenantQuota GetQuota()
{
return CoreContext.TenantManager.GetTenantQuota(Tenant.TenantId);
}
[Read("quota/right")]
public TenantQuota GetRightQuota()
{
var usedSpace = GetUsedSpace();
var needUsersCount = GetUsersCount();
return CoreContext.TenantManager.GetTenantQuotas().OrderBy(r => r.Price)
.FirstOrDefault(quota =>
quota.ActiveUsers > needUsersCount
&& quota.MaxTotalSize > usedSpace
&& !quota.Year);
}
[Read("path")]
public string GetFullAbsolutePath(string virtualPath)
{
return CommonLinkUtility.GetFullAbsolutePath(ApiContext.HttpContext, virtualPath);
}
}
}