public IQueryable <SubscriptionDto> Subscriptions([FromBody] SubscriptionBasketModel model) { var list = new List <SubscriptionDto>(); var user = GetUser(model.User.Id); if (user != null) { var courses = Db.Activities.OfType <Course>().Where(x => x.Occurrence.Subscriptions.Any(s => s.UserId.Equals(user.Id))).ToList(); foreach (var course in courses) { var subscription = course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(model.User.Id)); var subModel = new SubscriptionDto(); subModel.CourseId = course.Id; subModel.IsValid = true; subModel.OnWaitingList = subscription.OnWaitingList; list.Add(subModel); } } return(list.AsQueryable()); }
public IQueryable <SubscriptionDto> Unsubscribe([FromBody] SubscriptionBasketModel model) { var subService = new SubscriptionService(Db); var user = GetUser(model.User.Id); foreach (var courseModel in model.Courses) { var course = Db.Activities.OfType <Course>().SingleOrDefault(x => x.Id == courseModel.Id); if (course != null && user != null) { var subscription = course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(model.User.Id)); if (subscription != null) { subService.DeleteSubscription(subscription); } } } return(new List <SubscriptionDto>().AsQueryable()); }
public IQueryable <SubscriptionDto> Subscribe([FromBody] SubscriptionBasketModel model) { var list = new List <SubscriptionDto>(); var user = GetUser(model.User.Id); if (user == null) { var subModel = new SubscriptionDto { CourseId = Guid.Empty, IsValid = false, Message = $"Invaild user with id {model.User.Id}" }; list.Add(subModel); return(list.AsQueryable()); } foreach (var courseModel in model.Courses) { var subModel = new SubscriptionDto(); subModel.CourseId = courseModel.Id; subModel.IsValid = true; var course = Db.Activities.OfType <Course>().SingleOrDefault(x => x.Id == courseModel.Id); if (course != null) { var subscription = course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(model.User.Id)); if (subscription == null) { subscription = new OccurrenceSubscription(); subscription.UserId = model.User.Id; subscription.TimeStamp = DateTime.Now; subscription.Occurrence = course.Occurrence; // TODO: Status "Warteliste" dafür dann den Service bauen // einfach: wenn LV zu CIE gehört, dann Warteliste bool isCie = course.SemesterGroups.Any(x => x.CapacityGroup.CurriculumGroup.Curriculum.ShortName.StartsWith("CIE")); if (isCie) { subscription.OnWaitingList = true; } subscription.SubscriberRemark = "Über API eingeschrieben"; subscription.Priority = 1; Db.Subscriptions.Add(subscription); } } else { subModel.IsValid = false; subModel.Message = $"Inavlid Course with Id {courseModel.Id}"; } list.Add(subModel); } Db.SaveChanges(); return(list.AsQueryable()); }