public async Task <ParentAlertTypeModel> SaveParentAlertTypes(ParentAlertTypeModel parentAlertTypes, int usi)
        {
            var parent = await _edFiDb.Parents.Where(p => p.ParentUsi == usi).FirstOrDefaultAsync();

            var parentAlert = await _edFiDb.ParentAlerts
                              .Include(x => x.AlertTypes)
                              .Where(x => x.ParentUniqueId == parent.ParentUniqueId)
                              .FirstOrDefaultAsync();

            var alertTypes = await _edFiDb.AlertTypes
                             .ToListAsync();

            var parentAlerts = alertTypes.Where(x => parentAlertTypes.Alerts.Any(pa => pa.AlertTypeId == x.AlertTypeId && pa.Enabled.HasValue && pa.Enabled.Value)).ToList();

            if (parentAlert == null)
            {
                parentAlert = createParentAlert(parent.ParentUniqueId);
            }

            parentAlert.AlertsEnabled = parentAlertTypes.AlertsEnabled;
            parentAlert.AlertTypes    = parentAlerts;

            await SaveChanges();

            return(parentAlertTypes);
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> SaveParentAlerts(ParentAlertTypeModel model)
        {
            var person = SecurityPrincipal.Current;
            var role   = person.Role;

            if (role.Equals("Parent", System.StringComparison.InvariantCultureIgnoreCase))
            {
                return(Ok(await _alertsService.SaveParentAlertTypes(model, person.PersonUSI)));
            }

            return(NotFound()); // A Teacher Shouldnt have access
        }
Esempio n. 3
0
        public async Task <ParentAlertTypeModel> GetParentAlertTypes(int usi)
        {
            var parentAlertTypes = new ParentAlertTypeModel();

            var parentAlert = await(from pa in _edFiDb.ParentAlerts
                                    .Include(x => x.AlertTypes)
                                    join p in _edFiDb.Parents on pa.ParentUniqueId equals p.ParentUniqueId
                                    where p.ParentUsi == usi
                                    select pa).FirstOrDefaultAsync();

            //Note: This flag was true always by the user feedback
            parentAlertTypes.AlertsEnabled = true;

            var alertTypes = (await _edFiDb.AlertTypes
                              .Include(x => x.ThresholdTypes)
                              .ToListAsync()).Select(alertType => new AlertTypeModel()
            {
                AlertTypeId      = alertType.AlertTypeId,
                Description      = alertType.Description,
                ShortDescription = alertType.ShortDescription,
                Enabled          = false,
                Thresholds       = alertType?.ThresholdTypes.Select(tt => new ThresholdTypeModel()
                {
                    ThresholdTypeId  = tt.ThresholdTypeId,
                    Description      = tt.Description,
                    ShortDescription = tt.ShortDescription,
                    ThresholdValue   = tt.ThresholdValue,
                }).ToList()
            }).ToList();

            var alertTypesResult = alertTypes.Select(alertType =>
            {
                alertType.Enabled = parentAlert?.AlertTypes.Any(x => x.AlertTypeId == alertType.AlertTypeId);
                return(alertType);
            });

            parentAlertTypes.Alerts = alertTypesResult.ToList();

            return(parentAlertTypes);
        }
Esempio n. 4
0
        private ParentAlertTypeModel featureToggleFilter(CustomParameters customParameters, ParentAlertTypeModel model)
        {
            List <AlertTypeModel> modelAlerts = new List <AlertTypeModel>();

            modelAlerts  = model.Alerts.ToList();
            model.Alerts = new List <AlertTypeModel>();

            foreach (var alert in modelAlerts)
            {
                if (alert.AlertTypeId == 1 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null).ToList()).FirstOrDefault().Count > 0 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null)).FirstOrDefault().FirstOrDefault().studentAbc.absence)
                {
                    model.Alerts.Add(modelAlerts.FirstOrDefault(x => x.AlertTypeId == 1));
                }

                if (alert.AlertTypeId == 2 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null).ToList()).FirstOrDefault().Count > 0 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null)).FirstOrDefault().FirstOrDefault().studentAbc.behavior)
                {
                    model.Alerts.Add(modelAlerts.FirstOrDefault(x => x.AlertTypeId == 2));
                }

                if (alert.AlertTypeId == 3 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null).ToList()).FirstOrDefault().Count > 0 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null)).FirstOrDefault().FirstOrDefault().studentAbc.missingAssignments)
                {
                    model.Alerts.Add(modelAlerts.FirstOrDefault(x => x.AlertTypeId == 3));
                }

                if (alert.AlertTypeId == 4 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null).ToList()).FirstOrDefault().Count > 0 &&
                    customParameters.featureToggle.Select(x => x.features.Where(i => i.enabled && i.studentAbc != null)).FirstOrDefault().FirstOrDefault().studentAbc.courseAverage)
                {
                    model.Alerts.Add(modelAlerts.FirstOrDefault(x => x.AlertTypeId == 4));
                }

                if (alert.AlertTypeId == 5)
                {
                    model.Alerts.Add(modelAlerts.FirstOrDefault(x => x.AlertTypeId == 5));
                }
            }
            return(model);
        }
Esempio n. 5
0
 public async Task <ParentAlertTypeModel> SaveParentAlertTypes(ParentAlertTypeModel parentAlertTypes, int usi)
 {
     return(await _alertRepository.SaveParentAlertTypes(parentAlertTypes, usi));
 }