Calendar: core: api

This commit is contained in:
NikolayRechkin 2020-02-26 14:44:32 +03:00
parent 0c1f99005d
commit 44ea8db96f
2 changed files with 61 additions and 44 deletions

View File

@ -104,52 +104,37 @@ namespace ASC.Calendar.BusinessObjects
}
/* public List<UserViewSettings> GetUserViewSettings(Guid userId, List<string> calendarIds)
public List<UserViewSettings> GetUserViewSettings(Guid userId, List<string> calendarIds)
{
var cc = new ColumnCollection();
var extCalId = cc.RegistryColumn("ext_calendar_id");
var usrId = cc.RegistryColumn("user_id");
var hideEvents = cc.RegistryColumn("hide_events");
var isAccepted = cc.RegistryColumn("is_accepted");
var textColor = cc.RegistryColumn("text_color");
var background = cc.RegistryColumn("background_color");
var alertType = cc.RegistryColumn("alert_type");
var calId = cc.RegistryColumn("convert(calendar_id using utf8)");
var calName = cc.RegistryColumn("name");
var timeZone = cc.RegistryColumn("time_zone");
var query = new SqlQuery("calendar_calendar_user")
.Select(cc.SelectQuery)
.Where((Exp.In(extCalId.Name, calendarIds) |
Exp.In(calId.Name, calendarIds)) &
Exp.Eq(usrId.Name, userId));
var data = db.ExecuteList(query);
var options = new List<UserViewSettings>();
foreach (var r in data)
{
var data = CalendarDb.CalendarCalendarUser
.Where(ccu =>
(calendarIds.Contains(ccu.CalendarId.ToString()) || calendarIds.Contains(ccu.ExtCalendarId)) &&
ccu.UserId == userId.ToString())
.ToList();
var options = new List<UserViewSettings>();
foreach (var r in data)
{
options.Add(new UserViewSettings()
{
CalendarId =
Convert.ToInt32(r[calId.Ind]) == 0
? Convert.ToString(r[extCalId.Ind])
: Convert.ToString(r[calId.Ind]),
UserId = usrId.Parse<Guid>(r),
IsHideEvents = hideEvents.Parse<bool>(r),
IsAccepted = isAccepted.Parse<bool>(r),
TextColor = textColor.Parse<string>(r),
BackgroundColor = background.Parse<string>(r),
EventAlertType = (EventAlertType) alertType.Parse<int>(r),
Name = calName.Parse<string>(r),
TimeZone = timeZone.Parse<TimeZoneInfo>(r)
Convert.ToInt32(r.CalendarId) == 0
? Convert.ToString(r.ExtCalendarId)
: Convert.ToString(r.CalendarId),
UserId = Guid.Parse(r.UserId),
IsHideEvents = Convert.ToBoolean(r.HideEvents),
IsAccepted = Convert.ToBoolean(r.IsAccepted),
TextColor = r.TextColor,
BackgroundColor = r.BackgroundColor,
EventAlertType = (EventAlertType)r.AlertType,
Name = r.Name,
TimeZone = TimeZoneConverter.GetTimeZone(r.TimeZone)
});
}
}
return options;
}
/*
public List<Calendar> LoadTodoCalendarsForUser(Guid userId)
{
var groups = UserManager.GetUserGroups(userId).Select(g => g.ID).ToList();

View File

@ -30,6 +30,9 @@ 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
{
@ -40,31 +43,48 @@ namespace ASC.Calendar.Controllers
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")]
@ -76,11 +96,23 @@ namespace ASC.Calendar.Controllers
}
[Read("{calendarId}")]
public CalendarWrapper GetCalendarById(int calendarId)
public CalendarWrapper GetCalendarById(string calendarId)
{
var calendars = DataProvider.GetCalendarById(calendarId);
int calId;
if (int.TryParse(calendarId, out calId))
{
var calendars = DataProvider.GetCalendarById(calId);
return (calendars != null ? CalendarWrapperHelper.Get(calendars) : null);
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;
}
}