protected override async Task HandleAbsenceEvent(AbsenceEvent @event, IIccOutput outputSettings)
        {
            Configure(outputSettings);
            tuitionResolver.Initialize();

            var absences = @event.Absences.Select(absence =>
            {
                var objective = absence.Objective;

                if (absence.Type == Absence.ObjectiveType.StudyGroup)
                {
                    objective = tuitionResolver.ResolveStudyGroup(absence.Objective);
                }

                return(new AbsenceData
                {
                    Date = absence.Date,
                    Objective = absence.Objective,
                    Type = ConvertObjectiveTypeToString(absence.Type),
                    LessonStart = absence.LessonStart,
                    LessonEnd = absence.LessonEnd
                });
            });

            var response = await iccImporter.ImportAbsencesAsync(absences.ToList());

            await HandleResponseAsync(response);
        }
Beispiel #2
0
 protected abstract Task HandleAbsenceEvent(AbsenceEvent @event, T outputSettings);
Beispiel #3
0
 public Task HandleAbsenceEvent(AbsenceEvent @event, IOutput outputSettings)
 {
     return(HandleAbsenceEvent(@event, CastSettings(outputSettings)));
 }
 private void HandleAbsenceEvent(AbsenceEvent obj)
 {
     Handle("absence", (handler, settings) => handler.HandleAbsenceEvent(obj, settings));
 }
Beispiel #5
0
        public async Task <ApiResult <NewAbsenceResponse> > Absence([FromBody] AbsenceEvent absenceEvent)
        {
            try
            {
                var info = await _signInManager.GetExternalLoginInfoAsync();

                var userId = info.Principal.FindFirstValue(ClaimTypes.Email);
                var token2 = info.AuthenticationTokens.Where(u => u.Name == "access_token").FirstOrDefault().Value.ToString();

                Models.Data.AbsenceRequest absenceRequest = _mapper.Map <AbsenceEvent, Models.Data.AbsenceRequest>(absenceEvent);
                absenceRequest.CreatedDateTime = DateTime.Now;
                absenceRequest.StatusDateTime  = DateTime.Now;
                absenceRequest.UserId          = userId;

                var result = _context.AbsenceRequests.Add(absenceRequest);

                await _context.SaveChangesAsync();

                var groupId = _configuration["GroupId"];
                // Create access rule with associated scope
                AclRule rule = new AclRule();
                rule.Role  = "writer";
                rule.Scope = new AclRule.ScopeData()
                {
                    Type = "group", Value = groupId
                };

                var service = GetcalendarService(info);

                var temprule = await service.Acl.List(userId).ExecuteAsync();

                bool flag = false;
                foreach (var item in temprule.Items)
                {
                    if (item.Id.Contains(groupId))
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    // Insert new access rule
                    AclRule res = await service.Acl.Insert(rule, userId).ExecuteAsync();
                }

                return(new ApiResult <NewAbsenceResponse>()
                {
                    Result = new NewAbsenceResponse()
                    {
                        absenceRequestId = result.Entity.AbsenceRequestId
                    },
                    Message = Models.Api.ApiResult <NewAbsenceResponse> .SuccessMessage
                });
            }
            catch (Exception ex)
            {
                Response.StatusCode = 500;
                _logger.LogError(ex.Message, ex);
                return(new ApiResult <NewAbsenceResponse>()
                {
                    Message = Models.Api.ApiResult <NewAbsenceResponse> .ErrorMessage
                });
            }
        }
Beispiel #6
0
 protected override Task HandleAbsenceEvent(AbsenceEvent @event, IFileOutput outputSettings)
 {
     return(WriteJson(@event.Absences, outputSettings, "absences.json"));
 }