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); }
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()); }