131 lines
4.5 KiB
C#
131 lines
4.5 KiB
C#
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using ASC.Api.Core;
|
|
using ASC.Common.Logging;
|
|
using ASC.Common.Utils;
|
|
using ASC.Core;
|
|
using ASC.Core.Common.Settings;
|
|
using ASC.Core.Tenants;
|
|
using ASC.Core.Users;
|
|
using ASC.Data.Reassigns;
|
|
using ASC.FederatedLogin;
|
|
using ASC.MessagingSystem;
|
|
using ASC.Calendar.Models;
|
|
using ASC.Security.Cryptography;
|
|
using ASC.Web.Api.Routing;
|
|
using ASC.Web.Core;
|
|
using ASC.Web.Core.Users;
|
|
using ASC.Web.Studio.Core;
|
|
using ASC.Web.Studio.Core.Notify;
|
|
using ASC.Web.Studio.UserControls.Statistics;
|
|
using ASC.Web.Studio.Utility;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
using SecurityContext = ASC.Core.SecurityContext;
|
|
using ASC.Calendar.Core;
|
|
using ASC.Calendar.Core.Dao;
|
|
using ASC.Calendar.BusinessObjects;
|
|
using ASC.Web.Core.Calendars;
|
|
using ASC.Calendar.ExternalCalendars;
|
|
using System.Linq;
|
|
|
|
namespace ASC.Calendar.Controllers
|
|
{
|
|
[DefaultRoute]
|
|
[ApiController]
|
|
public class CalendarController : ControllerBase
|
|
{
|
|
|
|
public Tenant Tenant { get { return ApiContext.Tenant; } }
|
|
public ApiContext ApiContext { get; }
|
|
public AuthContext AuthContext { get; }
|
|
public UserManager UserManager { get; }
|
|
public DataProvider DataProvider { get; }
|
|
public ILog Log { get; }
|
|
private TenantManager TenantManager { get; }
|
|
public TimeZoneConverter TimeZoneConverter { get; }
|
|
public CalendarWrapperHelper CalendarWrapperHelper { get; }
|
|
public DisplayUserSettingsHelper DisplayUserSettingsHelper { get; }
|
|
public CalendarController(
|
|
|
|
ApiContext apiContext,
|
|
AuthContext authContext,
|
|
UserManager userManager,
|
|
TenantManager tenantManager,
|
|
TimeZoneConverter timeZoneConverter,
|
|
DisplayUserSettingsHelper displayUserSettingsHelper,
|
|
IOptionsMonitor<ILog> option,
|
|
|
|
DataProvider dataProvider,
|
|
|
|
CalendarWrapperHelper calendarWrapperHelper)
|
|
{
|
|
AuthContext = authContext;
|
|
TenantManager = tenantManager;
|
|
Log = option.Get("ASC.Api");
|
|
TimeZoneConverter = timeZoneConverter;
|
|
ApiContext = apiContext;
|
|
UserManager = userManager;
|
|
DataProvider = dataProvider;
|
|
CalendarWrapperHelper = calendarWrapperHelper;
|
|
DisplayUserSettingsHelper = displayUserSettingsHelper;
|
|
|
|
CalendarManager.Instance.RegistryCalendar(new SharedEventsCalendar(AuthContext, TimeZoneConverter, TenantManager));
|
|
var birthdayReminderCalendar = new BirthdayReminderCalendar(AuthContext, TimeZoneConverter, UserManager, DisplayUserSettingsHelper);
|
|
if (UserManager.IsUserInGroup(AuthContext.CurrentAccount.ID, Constants.GroupVisitor.ID))
|
|
{
|
|
CalendarManager.Instance.UnRegistryCalendar(birthdayReminderCalendar.Id);
|
|
}
|
|
else
|
|
{
|
|
CalendarManager.Instance.RegistryCalendar(birthdayReminderCalendar);
|
|
}
|
|
}
|
|
|
|
[Read("info")]
|
|
public Module GetModule()
|
|
{
|
|
var product = new CalendarProduct();
|
|
product.Init();
|
|
return new Module(product, true);
|
|
}
|
|
|
|
[Read("{calendarId}")]
|
|
public CalendarWrapper GetCalendarById(string calendarId)
|
|
{
|
|
int calId;
|
|
if (int.TryParse(calendarId, out calId))
|
|
{
|
|
var calendars = DataProvider.GetCalendarById(calId);
|
|
|
|
return (calendars != null ? CalendarWrapperHelper.Get(calendars) : null);
|
|
}
|
|
|
|
var extCalendar = CalendarManager.Instance.GetCalendarForUser(AuthContext.CurrentAccount.ID, calendarId, UserManager);
|
|
if (extCalendar != null)
|
|
{
|
|
var viewSettings = DataProvider.GetUserViewSettings(AuthContext.CurrentAccount.ID, new List<string> { calendarId });
|
|
return CalendarWrapperHelper.Get(extCalendar, viewSettings.FirstOrDefault());
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static class CalendarControllerExtention
|
|
{
|
|
public static IServiceCollection AddCalendarController(this IServiceCollection services)
|
|
{
|
|
return services
|
|
.AddApiContextService()
|
|
.AddSecurityContextService()
|
|
.AddCalendarDbContextService()
|
|
.AddCalendarDataProviderService()
|
|
.AddCalendarWrapper();
|
|
}
|
|
}
|
|
} |