Example #1
0
        public async Task <IHttpActionResult> LocationHistory()
        {
            var locations = new List <string>();

            using (var context = new IdentoolsDbContext())
            {
                locations.AddRange(await context.Suggestions.Select(s => s.Location).Distinct().ToListAsync());
            }

            return(Ok(locations));
        }
Example #2
0
        public async Task <IHttpActionResult> Delete(Guid id)
        {
            using (var context = new IdentoolsDbContext())
            {
                var suggestion = await context.Suggestions.FindAsync(id);

                context.Suggestions.Remove(suggestion);
                await context.SaveChangesAsync();
            }

            return(Ok());
        }
Example #3
0
        public async Task <IHttpActionResult> Get(Guid id)
        {
            Suggestion suggestion;

            using (var context = new IdentoolsDbContext())
            {
                suggestion = await context.Suggestions.Include(s => s.SuggestionAttendees).SingleAsync(s => s.Id == id);
            }

            var suggestionCardModel = Mapper.Map <SuggestionCardModel>(suggestion);

            return(Ok(suggestionCardModel));
        }
Example #4
0
        public async Task <IHttpActionResult> Post([FromBody] Suggestion suggestion)
        {
            var newSuggestion = new Suggestion
            {
                Location  = suggestion.Location,
                StartTime = suggestion.StartTime,
                UserName  = HttpContext.Current.User.Identity.Name
            };

            using (var context = new IdentoolsDbContext())
            {
                var existingAttendance =
                    await
                    context.SuggestionAttendees.SingleOrDefaultAsync(sa => sa.Suggestion.StartTime.Day == DateTime.Now.Day && sa.UserName == HttpContext.Current.User.Identity.Name);

                Guid?exisitingAttendanceSuggestionId = null;

                if (existingAttendance != null)
                {
                    exisitingAttendanceSuggestionId = existingAttendance.SuggestionId;
                    context.SuggestionAttendees.Remove(existingAttendance);
                }

                newSuggestion.SuggestionAttendees.Add(new SuggestionAttendee
                {
                    UserName = HttpContext.Current.User.Identity.Name
                });
                context.Suggestions.Add(newSuggestion);

                await context.SaveChangesAsync();

                if (exisitingAttendanceSuggestionId.HasValue)
                {
                    SuggestionHub.UpdateSuggestion(exisitingAttendanceSuggestionId.Value);
                }
            }

            var suggestionCardModel = Mapper.Map <SuggestionCardModel>(newSuggestion);

            SuggestionHub.AddSuggestion(suggestionCardModel);

            return(Ok());
        }
Example #5
0
        public async Task <IHttpActionResult> Get()
        {
            var suggestions = new List <Suggestion>();

            using (var context = new IdentoolsDbContext())
            {
                try
                {
                    var todaysSuggestions = await context.Suggestions.Where(s => s.StartTime.Day == DateTime.Now.Day).Include(s => s.SuggestionAttendees).ToListAsync();

                    suggestions.AddRange(todaysSuggestions);
                }
                catch (Exception ex)
                {
                    return(InternalServerError(ex));
                }
            }

            var suggestionCardModels = suggestions.Select(Mapper.Map <SuggestionCardModel>);

            return(Ok(suggestionCardModels));
        }
Example #6
0
        public async Task <IHttpActionResult> Attend(Guid id)
        {
            using (var context = new IdentoolsDbContext())
            {
                try
                {
                    var username = HttpContext.Current.User.Identity.Name;

                    var existingAttendance =
                        await
                        context.SuggestionAttendees.Include(sa => sa.Suggestion).SingleOrDefaultAsync(sa => sa.Suggestion.StartTime.Day == DateTime.Now.Day && sa.UserName == username);

                    if (existingAttendance == null)
                    {
                        var suggestionAttendee = new SuggestionAttendee
                        {
                            SuggestionId = id,
                            UserName     = username
                        };

                        context.SuggestionAttendees.Add(suggestionAttendee);

                        await context.SaveChangesAsync();

                        SuggestionHub.UpdateSuggestion(id);

                        var suggestion = context.Suggestions.Find(id);

                        SuggestionHub.AnnounceAttendance(username.Split('\\').Last(), suggestion.Location, true);
                    }
                    else
                    {
                        if (existingAttendance.SuggestionId == id)
                        {
                            context.SuggestionAttendees.Remove(existingAttendance);

                            await context.SaveChangesAsync();

                            var suggestion = context.Suggestions.Find(id);

                            SuggestionHub.AnnounceAttendance(username.Split('\\').Last(), suggestion.Location, false);
                        }
                        else
                        {
                            var existingAttendanceLocation = existingAttendance.Suggestion.Location;

                            context.SuggestionAttendees.Remove(existingAttendance);

                            SuggestionHub.AnnounceAttendance(username.Split('\\').Last(), existingAttendanceLocation, false);

                            var suggestionAttendee = new SuggestionAttendee
                            {
                                SuggestionId = id,
                                UserName     = username
                            };

                            context.SuggestionAttendees.Add(suggestionAttendee);

                            await context.SaveChangesAsync();

                            SuggestionHub.UpdateSuggestion(id);
                            SuggestionHub.AnnounceAttendance(username.Split('\\').Last(), existingAttendanceLocation, true);
                        }

                        SuggestionHub.UpdateSuggestion(existingAttendance.SuggestionId);
                    }
                }
                catch (Exception ex)
                {
                    return(InternalServerError(ex));
                }
            }

            return(Ok());
        }