예제 #1
0
        public JsonResult DeleteCalendarItem([FromBody] CalendarItemJson item)
        {
            if (ModelState.IsValid)
            {
                var calandarItem = _calendarService.GetCalendarItemById(item.CalendarItemId);

                if (calandarItem == null || calandarItem.DepartmentId != DepartmentId)
                {
                    Unauthorized();
                }

                _calendarService.DeleteCalendarItemById(item.CalendarItemId);
            }

            return(null);
        }
예제 #2
0
        public async Task <JsonResult> DeleteCalendarItem([FromBody] CalendarItemJson item, CancellationToken cancellationToken)
        {
            if (ModelState.IsValid)
            {
                var calandarItem = await _calendarService.GetCalendarItemByIdAsync(item.CalendarItemId);

                if (calandarItem == null || calandarItem.DepartmentId != DepartmentId)
                {
                    Unauthorized();
                }

                await _calendarService.DeleteCalendarItemByIdAsync(item.CalendarItemId, cancellationToken);
            }

            return(null);
        }
예제 #3
0
        public IActionResult GetDepartmentCalendarItems()
        {
            List <CalendarItemJson> jsonItems = new List <CalendarItemJson>();
            var items      = _calendarService.GetAllCalendarItemsForDepartment(DepartmentId);
            var department = _departmentsService.GetDepartmentById(DepartmentId, false);

            foreach (var item in items)
            {
                CalendarItemJson calendarItem = new CalendarItemJson();
                calendarItem.CalendarItemId = item.CalendarItemId;
                calendarItem.Title          = item.Title;
                //calendarItem.Start = item.Start;
                //calendarItem.End = item.End;

                calendarItem.Start = item.Start.TimeConverter(department).ToString("O");
                calendarItem.End   = item.End.TimeConverter(department).ToString("O");

                calendarItem.StartTimezone       = item.StartTimezone;
                calendarItem.EndTimezone         = item.EndTimezone;
                calendarItem.Description         = item.Description;
                calendarItem.RecurrenceId        = item.RecurrenceId;
                calendarItem.RecurrenceRule      = item.RecurrenceRule;
                calendarItem.RecurrenceException = item.RecurrenceException;
                calendarItem.IsAllDay            = item.IsAllDay;
                calendarItem.ItemType            = item.ItemType;
                calendarItem.Location            = item.Location;
                calendarItem.SignupType          = item.SignupType;
                calendarItem.Reminder            = item.Reminder;
                calendarItem.LockEditing         = item.LockEditing;
                calendarItem.Entities            = item.Entities;
                calendarItem.RequiredAttendes    = item.RequiredAttendes;
                calendarItem.OptionalAttendes    = item.OptionalAttendes;
                calendarItem.Public = item.Public;

                if (!String.IsNullOrWhiteSpace(item.RecurrenceId))
                {
                    var parent = _calendarService.GetCalendarItemById(int.Parse(item.RecurrenceId));

                    if (parent == null)
                    {
                        calendarItem.RecurrenceId        = null;
                        calendarItem.RecurrenceRule      = null;
                        calendarItem.RecurrenceException = null;
                    }
                }

                if (!String.IsNullOrWhiteSpace(item.CreatorUserId))
                {
                    calendarItem.CreatorUserId = item.CreatorUserId.ToString();
                }

                if (department.IsUserAnAdmin(UserId))
                {
                    calendarItem.IsAdminOrCreator = true;
                }
                else if (!String.IsNullOrWhiteSpace(item.CreatorUserId) && item.CreatorUserId == UserId)
                {
                    calendarItem.IsAdminOrCreator = true;
                }
                else
                {
                    calendarItem.IsAdminOrCreator = false;
                }


                jsonItems.Add(calendarItem);
            }

            return(Json(jsonItems));
        }
예제 #4
0
        public JsonResult UpdateCalendarItem(CalendarItemJson item)
        {
            if (ModelState.IsValid)
            {
                var department = _departmentsService.GetDepartmentById(DepartmentId, false);

                var calendarItem = _calendarService.GetCalendarItemById(item.CalendarItemId);

                if (calendarItem != null)
                {
                    calendarItem.DepartmentId   = DepartmentId;
                    calendarItem.CalendarItemId = item.CalendarItemId;
                    calendarItem.Title          = item.Title;

                    //if (item.Start.Kind == DateTimeKind.Utc)
                    //	calendarItem.Start = item.Start.TimeConverter(department);
                    //else
                    //	calendarItem.Start = item.Start;

                    //if (item.End.Kind == DateTimeKind.Utc)
                    //	calendarItem.End = item.End.TimeConverter(department);
                    //else
                    //	calendarItem.End = item.End;

                    calendarItem.Start = DateTime.Parse(item.Start).ToUniversalTime();
                    calendarItem.End   = DateTime.Parse(item.End).ToUniversalTime();

                    calendarItem.StartTimezone       = item.StartTimezone;
                    calendarItem.EndTimezone         = item.EndTimezone;
                    calendarItem.Description         = item.Description;
                    calendarItem.RecurrenceId        = item.RecurrenceId;
                    calendarItem.RecurrenceRule      = item.RecurrenceRule;
                    calendarItem.RecurrenceException = item.RecurrenceException;
                    calendarItem.IsAllDay            = item.IsAllDay;
                    calendarItem.Location            = item.Location;
                    calendarItem.SignupType          = item.SignupType;
                    calendarItem.Reminder            = item.Reminder;
                    calendarItem.LockEditing         = item.LockEditing;
                    calendarItem.Entities            = item.Entities;
                    calendarItem.RequiredAttendes    = item.RequiredAttendes;
                    calendarItem.OptionalAttendes    = item.OptionalAttendes;
                    calendarItem.CreatorUserId       = UserId;
                    calendarItem.Public = item.Public;

                    calendarItem.StartTimezone = DateTimeHelpers.WindowsToIana(department.TimeZone);
                    calendarItem.EndTimezone   = DateTimeHelpers.WindowsToIana(department.TimeZone);

                    if (item.ItemType.HasValue)
                    {
                        calendarItem.ItemType = item.ItemType.Value;
                    }

                    calendarItem = _calendarService.SaveCalendarItem(calendarItem);

                    _eventAggregator.SendMessage <CalendarEventUpdatedEvent>(new CalendarEventUpdatedEvent()
                    {
                        DepartmentId = DepartmentId, Item = calendarItem
                    });

                    return(Json(item));
                }
            }

            return(null);
        }
예제 #5
0
        public JsonResult CreateCalendarItem([FromBody] CalendarItemJson item)
        {
            if (ModelState.IsValid)
            {
                var department = _departmentsService.GetDepartmentById(DepartmentId, false);

                var timeZone = "Etc/UTC";
                if (!String.IsNullOrWhiteSpace(department.TimeZone))
                {
                    timeZone = DateTimeHelpers.WindowsToIana(department.TimeZone);
                }

                CalendarItem calendarItem = new CalendarItem();
                calendarItem.DepartmentId   = DepartmentId;
                calendarItem.CalendarItemId = item.CalendarItemId;
                calendarItem.Title          = item.Title;

                //if (item.Start.Kind == DateTimeKind.Utc)
                //	calendarItem.Start = item.Start.TimeConverter(department);
                //else
                //	calendarItem.Start = item.Start;

                //if (item.End.Kind == DateTimeKind.Utc)
                //	calendarItem.End = item.End.TimeConverter(department);
                //else
                //	calendarItem.End = item.End;

                if (!String.IsNullOrWhiteSpace(item.Start))
                {
                    calendarItem.Start = DateTime.Parse(item.Start).ToUniversalTime();
                }
                else
                {
                    calendarItem.Start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).ToUniversalTime();
                }

                if (!String.IsNullOrWhiteSpace(item.End))
                {
                    calendarItem.End = DateTime.Parse(item.End).ToUniversalTime();
                }
                else
                {
                    calendarItem.Start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59).ToUniversalTime();
                }

                if (!String.IsNullOrWhiteSpace(item.StartTimezone))
                {
                    calendarItem.StartTimezone = item.StartTimezone;
                }
                else
                {
                    calendarItem.StartTimezone = timeZone;
                }

                if (!String.IsNullOrWhiteSpace(item.EndTimezone))
                {
                    calendarItem.EndTimezone = item.EndTimezone;
                }
                else
                {
                    calendarItem.EndTimezone = timeZone;
                }

                calendarItem.Description         = item.Description;
                calendarItem.RecurrenceId        = item.RecurrenceId;
                calendarItem.RecurrenceRule      = item.RecurrenceRule;
                calendarItem.RecurrenceException = item.RecurrenceException;
                calendarItem.IsAllDay            = item.IsAllDay;
                calendarItem.Location            = item.Location;
                calendarItem.SignupType          = item.SignupType;
                calendarItem.Reminder            = item.Reminder;
                calendarItem.LockEditing         = item.LockEditing;
                calendarItem.Entities            = item.Entities;
                calendarItem.RequiredAttendes    = item.RequiredAttendes;
                calendarItem.OptionalAttendes    = item.OptionalAttendes;
                calendarItem.Public        = item.Public;
                calendarItem.CreatorUserId = UserId;

                calendarItem.StartTimezone = DateTimeHelpers.WindowsToIana(department.TimeZone);
                calendarItem.EndTimezone   = DateTimeHelpers.WindowsToIana(department.TimeZone);

                if (item.ItemType.HasValue)
                {
                    calendarItem.ItemType = item.ItemType.Value;
                }

                calendarItem = _calendarService.SaveCalendarItem(calendarItem);

                _eventAggregator.SendMessage <CalendarEventAddedEvent>(new CalendarEventAddedEvent()
                {
                    DepartmentId = DepartmentId, Item = calendarItem
                });

                return(Json(item));
            }

            return(null);
        }