public bool Unmark_Interest(Interest_Request request) { var userInterest = _db.User_Talk_Interests.FirstOrDefault(x => x.User_ID == request.User_ID && x.Talk_ID == request.Talk_ID); if (userInterest != null) { _db.User_Talk_Interests.Remove(userInterest); _db.SaveChanges(); return(true); } return(false); }
public bool Unmark_Interested([FromBody] Interest_Request model) { return(_talkService.Unmark_Interest(model)); }
public Interest_Result Mark_Interested_Overwrite([FromBody] Interest_Request model) { return(_talkService.Log_Interest(model, true)); }
public Interest_Result Mark_Interested([FromBody] Interest_Request model) { return(_talkService.Log_Interest(model, false)); }
public Interest_Result Log_Interest(Interest_Request request, bool overwrite) { var existingTalk = _db.Talks .Include(x => x.Tags) .ThenInclude(x => x.Tag) .Include(x => x.Author) .ThenInclude(x => x.User) .FirstOrDefault(x => x.ID == request.Talk_ID); if (overwrite) { var ticketInterest = _db.User_Talk_Interests.FirstOrDefault(x => x.Talk_ID == request.Talk_ID && x.User_ID == request.User_ID); ticketInterest.Talk_ID = request.Overwrite_ID; _db.User_Talk_Interests.Update(ticketInterest); _db.SaveChanges(); return(new Interest_Result() { Success = true, Interest_Talk = null, Overwrite_Talk = null }); } else { var existingInterests = _db.User_Talk_Interests.Where(x => x.User_ID == request.User_ID); if (existingInterests.Count() == 0) { User_Talk_Interest userInterest = new User_Talk_Interest() { ID = Guid.NewGuid().ToString(), Talk_ID = request.Talk_ID, User_ID = request.User_ID }; _db.User_Talk_Interests.Add(userInterest); _db.SaveChanges(); return(new Interest_Result() { Success = true, Interest_Talk = null, Overwrite_Talk = null }); } else { var conflictingSessions = existingInterests.Where(x => x.Talk.Start >= existingTalk.Start && x.Talk.End <= existingTalk.End).Count(); if (conflictingSessions > 0) { var conflictingTalk = existingInterests .Include(x => x.Talk) .ThenInclude(x => x.Tags) .Include(x => x.Talk) .ThenInclude(x => x.Author) .ThenInclude(x => x.User) .Where(x => x.Talk.Start >= existingTalk.Start && x.Talk.End <= existingTalk.End && x.Talk_ID != existingTalk.ID).FirstOrDefault().Talk; return(new Interest_Result() { Success = false, Interest_Talk = new Basic_Talk_Info() { ID = existingTalk.ID, Name = existingTalk.Title, Author = new Models.ViewModels.Author.Basic_Author_Info() { First_Name = existingTalk.Author.User.First_Name, Last_Name = existingTalk.Author.User.Last_Name }, Description = existingTalk.Description, Start = existingTalk.Start, End = existingTalk.End, Tags = existingTalk.Tags.Select(x => x.Tag.Name).ToList() }, Overwrite_Talk = new Basic_Talk_Info() { ID = conflictingTalk.ID, Name = conflictingTalk.Title, Author = new Models.ViewModels.Author.Basic_Author_Info() { First_Name = conflictingTalk.Author.User.First_Name, Last_Name = conflictingTalk.Author.User.Last_Name }, Description = conflictingTalk.Description, Start = conflictingTalk.Start, End = conflictingTalk.End } }); } else { User_Talk_Interest userInterest = new User_Talk_Interest() { ID = Guid.NewGuid().ToString(), Talk_ID = request.Talk_ID, User_ID = request.User_ID }; _db.User_Talk_Interests.Add(userInterest); _db.SaveChanges(); return(new Interest_Result() { Success = true, Interest_Talk = null, Overwrite_Talk = null }); } } } }