Example #1
0
        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());
        }
Example #2
0
        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());
        }
Example #3
0
        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());
        }