public async Task <OperationDataResult <List <CalendarEventModel> > > Index(CalendarEventsRequestModel requestModel)
 {
     return(await _calendarService.Index(requestModel));
 }
        public async Task <OperationDataResult <List <CalendarEventModel> > > Index(CalendarEventsRequestModel requestModel)
        {
            try
            {
                var calendarEventModels = new List <CalendarEventModel>();
                var core  = _coreHelper.GetCore();
                var cases = await core.Result.CaseReadAll(requestModel.TemplateId, requestModel.StartDate, requestModel.EndDate, null);

                var casesSiteIds = cases.Where(x => x.SiteId != null)
                                   .Select(x => x.SiteId)
                                   .GroupBy(x => x)
                                   .Select(x => (int)x.Key)
                                   .ToList();

                var calendarUsers = _dbContext.CalendarUsers
                                    .Where(x => casesSiteIds.Contains(x.SiteId) && x.IsVisibleInCalendar)
                                    .ToList();

                foreach (var caseItem in cases)
                {
                    if (caseItem.SiteId != null)
                    {
                        var siteId       = caseItem.SiteId;
                        var calendarUser = calendarUsers.FirstOrDefault(x => x.SiteId == siteId);
                        if (calendarUser != null)
                        {
                            var dateParseResult = DateTime.TryParseExact(caseItem.FieldValue1,
                                                                         "yyyy-MM-dd",
                                                                         null,
                                                                         DateTimeStyles.None,
                                                                         out DateTime date);
                            var item = new CalendarEventModel
                            {
                                Color = calendarUser.Color,
                                Title = caseItem.FieldValue2
                            };
                            if (dateParseResult)
                            {
                                item.Start = date;
                                item.End   = date;
                            }
                            item.Meta = new CalendarEventMeta
                            {
                                CaseId           = caseItem.Id.ToString(),
                                CalendarUserName = calendarUser.NameInCalendar
                            };
                            // Add item
                            calendarEventModels.Add(item);
                        }
                    }
                }

                return(new OperationDataResult <List <CalendarEventModel> >(true, calendarEventModels));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <List <CalendarEventModel> >(false,
                                                                            _caseManagementLocalizationService.GetString("ErrorObtainingCalendarInfo")));
            }
        }