Пример #1
0
        public async Task UpdateAsync(NewsNotificationViewModel model)
        {
            var record = MapUpdate().CreateMapper().Map <NewsNotification>(model);

            if ((model.Status == NewsNotificationStatus.Approved) && (model.HangfireTaskId == null))
            {
                if (DateTime.Compare(model.PushDateUtc, DateTime.UtcNow) < 0)
                {
                    BackgroundJob.Enqueue(() => new PushNotificationWorker().SendPush(model.Id));
                }
                else
                {
                    var job = BackgroundJob.Schedule(() => new PushNotificationWorker().SendPush(model.Id), model.PushDateUtc - DateTime.UtcNow);

                    record.HangfireTaskId = job;
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(record.HangfireTaskId))
                {
                    BackgroundJob.Delete(record.HangfireTaskId);
                    record.HangfireTaskId = null;
                }
            }

            await _repo.NewsNotifications.AddOrUpdateAndSaveAsync(record);
        }
Пример #2
0
        public async Task AddAsync(NewsNotificationViewModel model)
        {
            model.CreatedById = ClaimsPrincipal.Current.Identity.GetUserId();
            var record = MapAdd().CreateMapper().Map <NewsNotification>(model);

            await _repo.NewsNotifications.AddOrUpdateAndSaveAsync(record);

            if (model.Status == NewsNotificationStatus.Approved)
            {
                var job = BackgroundJob.Schedule(() => new PushNotificationWorker().SendPush(record.Id), model.PushDateUtc - DateTime.UtcNow);
                record.HangfireTaskId = job;
            }

            await _repo.NewsNotifications.AddOrUpdateAndSaveAsync(record);
        }
        public async Task <IHttpActionResult> Put(NewsNotificationViewModel model)
        {
            ModelState.AddModelError("model.TeamId", "Team is Required");
            ModelState.AddModelError("model.SchoolId", "School is Required");
            ModelState.AddModelError("model.SportId", "Sport is Required");
            if (!String.IsNullOrEmpty(model.SportId) || !String.IsNullOrEmpty(model.TeamId) || !String.IsNullOrEmpty(model.SchoolId) || User.IsInRole("ContentSource"))
            {
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SchoolId");
            }
            if (User.IsInRole("TeamAdmin") && User.IsInRole("SchoolAdmin") && String.IsNullOrEmpty(model.SchoolId) && String.IsNullOrEmpty(model.TeamId))
            {
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.SchoolId");
                ModelState.AddModelError("model.TeamId", "Either Team or School is required");
                ModelState.AddModelError("model.SchoolId", "Either Team or School is required");
            }

            if (User.IsInRole("TeamAdmin") && !User.IsInRole("SchoolAdmin"))
            {
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.SchoolId");
            }
            if (User.IsInRole("SchoolAdmin") && !User.IsInRole("TeamAdmin"))
            {
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SportId");
            }
            if (User.IsInRole("System_Admin"))
            {
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.SchoolId");
                ModelState.Remove("model.TeamId");
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _newsNotificationBuilder.UpdateAsync(model);

            return(Ok());
        }
        public async Task <IHttpActionResult> Post(NewsNotificationViewModel model)
        {
            ModelState.AddModelError("model.TeamId", "Team is Required");
            ModelState.AddModelError("model.SchoolId", "School is Required");
            ModelState.AddModelError("model.SportId", "Sport is Required");
            if (!String.IsNullOrEmpty(model.SportId) || !String.IsNullOrEmpty(model.TeamId) || !String.IsNullOrEmpty(model.SchoolId) || User.IsInRole("ContentSource"))
            {
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SchoolId");
            }

            if (User.IsInRole("TeamAdmin") && User.IsInRole("SchoolAdmin") && String.IsNullOrEmpty(model.SchoolId) && String.IsNullOrEmpty(model.TeamId))
            {
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.SchoolId");
                ModelState.AddModelError("model.TeamId", "Either Team or School is required");
                ModelState.AddModelError("model.SchoolId", "Either Team or School is required");
            }

            if (User.IsInRole("TeamAdmin") && !User.IsInRole("SchoolAdmin"))
            {
                ModelState.Remove("model.SportId");
                ModelState.Remove("model.SchoolId");
            }
            if (User.IsInRole("SchoolAdmin") && !User.IsInRole("TeamAdmin"))
            {
                ModelState.Remove("model.TeamId");
                ModelState.Remove("model.SportId");
            }
            var userId = User.Identity.GetUserId();

            model.ContentSourceId = _repo.Users.Where(m => m.Id == userId).FirstOrDefault()?.ContentSourceId ?? null;
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _newsNotificationBuilder.AddAsync(model);

            return(Ok());
        }