public async Task <IActionResult> PostConversation([FromBody] CreateConversationViewModel createConversationViewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var currentUser = await _userManager.FindByNameAsync(User.FindFirstValue(ClaimTypes.NameIdentifier)); var conversation = new Conversation { Name = createConversationViewModel.Name, Description = createConversationViewModel.Description, Author = currentUser, }; _context.Conversation.Add(conversation); _context.ConversationUser.Add(new ConversationUser { Conversation = conversation, User = currentUser }); await _context.SaveChangesAsync(); return(CreatedAtAction("GetConversation", new { id = conversation.ConversationId }, new GetViewModel(conversation))); }
private void ValidateCreateConversationViewModel(CreateConversationViewModel model) { if (model.UserIds == null) { return; } if (model.UserIds.Contains(User.Identity.Id)) { ModelState.AddModelError(nameof(CreateConversationViewModel.UserIds), "You can not talk with yourself... 4ever alone :("); } if (!model.UserIds.Any()) { ModelState.AddModelError(nameof(CreateConversationViewModel.UserIds), "You have to provide at least one user."); } if (!_conversationService.UsersExists(model.UserIds)) { ModelState.AddModelError(nameof(CreateConversationViewModel.UserIds), "Providen users do not exists."); } if (_conversationService.ConversationForUserGroupExists(model.UserIds, User.Identity.Id)) { ModelState.AddModelError(nameof(CreateConversationViewModel.UserIds), "Conversation for this group of users already exists."); } }
public async Task <IActionResult> Create(CreateConversationViewModel model) { if (ModelState.IsValid) { return(View("CreateSchedule", model)); } // We recreate the HttpGet request here why, because reasons. model.PlannableDates = new List <SelectListItem>(); model.ConversationTypes = new List <SelectListItem>(); var conversationTypes = _context.ConversationTypes.ToList(); foreach (var conversationType in conversationTypes) { model.ConversationTypes.Add(new SelectListItem { Value = conversationType.Id.ToString(), Text = $"{conversationType.ConversationName} ({conversationType.ConversationDuration} minuten)" }); } model.ConversationTypes[0].Selected = true; var tempUser = await GetCurrentUser(); var user = _context.Users.Include(u => u.Group).First(u => u.Id == tempUser.Id); var planDates = await _context.ConversationPlanDateClaims.Include(pdc => pdc.Group).Include(pdc => pdc.ConversationPlanDate).Where(pdc => pdc.Group == user.Group).ToListAsync(); var counter = 1; foreach (var planDate in planDates) { var selectListGroup = new SelectListGroup { Name = $"Periode {counter}" }; var datesToLoop = (int)planDate.ConversationPlanDate.EndDate.Subtract(planDate.ConversationPlanDate.StartDate).TotalDays; for (int i = 0; i <= datesToLoop; i++) { var date = planDate.ConversationPlanDate.StartDate.AddDays(i); // Teachers don't work in the weekend if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) { continue; } var selectListItem = new SelectListItem(); selectListItem.Value = date.ToString("d"); selectListItem.Text = date.ToString("dddd dd-MM-yyyy"); selectListItem.Group = selectListGroup; model.PlannableDates.Add(selectListItem); } counter++; } return(View(model)); }
public ActionResult Create(CreateConversationViewModel model) { ValidateCreateConversationViewModel(model); if (ModelState.IsValid) { _conversationService.CreateConversation(model.Name, model.UserIds, User.Identity.Id); return(RedirectToAction(nameof(Index))); } ViewData.Add("UsersSelectListItems", _conversationService.GetAllUsersExceptAsSelectListItems(User.Identity.Id)); return(View(model)); }
public void PostConversation() { var controller = GetController(); var c = new CreateConversationViewModel { Name = "testname_post", Description = "testdescr_post" }; var res = controller.PostConversation(c).Result; Assert.NotNull(res); }
public ActionResult Create() { try { //Get all Tour Agents that can be selected TourAgentModel tourAgent = new TourAgentModel(); //Create View data CreateConversationViewModel model = new CreateConversationViewModel(tourAgent.AllAgents); return(View(model)); } catch (Exception e) { return(RedirectToAction("HandledCodeError", "ErrorHandler", new { exception = e.ToString() })); } }
public ActionResult Create(CreateConversationViewModel model) { try { TourAgentModel tourAgent = new TourAgentModel(model.TravelAgentID); if (tourAgent.ValidAgent) { ConversationModel conversation = new ConversationModel(tourAgent, model.Title); return(RedirectToAction("Conversation", "Conversation", new { id = conversation.ID })); } return(RedirectToAction("LogOff", "Account")); } catch (Exception e) { return(RedirectToAction("HandledCodeError", "ErrorHandler", new { exception = e.ToString() })); } }
public ActionResult Create(CreateConversationViewModel model) { //try { // // TODO: Add insert logic here // if (ModelState.IsValid) { // _service.CreateConversation(model); // } //} //catch //{ // return View(); //} //return RedirectToAction("Index", "Familys", new { userID = model.UserName, famName = _service.GetFamilyNameById(model.FamId) }); //View model should // //not have id if (ModelState.IsValid) { _service.CreateConversation(model); } return(RedirectToAction("Index", "Familys", new { userID = model.UserName, famName = _service.GetFamilyNameById(model.FamId) })); //View model should }
/*Done*/ public void CreateConversation(CreateConversationViewModel model) { var currUser = GetMemberByUserName(model.UserName); Conversation newConvo = new Conversation { Topic = model.NewTopic, CreatedBy = currUser, WhichFam = _repo.Find<Family>(model.FamId), IsEvent = model.IsEvent, Recurs = model.Recurs, ExpirationDate = model.ExpirationDate, CreatedDate = DateTime.Now, MessageList = new List<Message>(), VisibleTo = new List<ConversationsVisibleToMembers>() { new ConversationsVisibleToMembers { MemberId = currUser.Id } }, Attenders = new List<ConversationsAttendedByMembers> { new ConversationsAttendedByMembers { MemberId = currUser.Id } } }; if (model.FirstMessage != null && model.FirstMessage != "") { Message newMessage = new Message { Text = model.FirstMessage, Contributor = newConvo.CreatedBy, Conversation = newConvo, TimeSubmitted = DateTime.Now }; newConvo.MessageList.Add(newMessage); _repo.Add<Message>(newMessage); } _repo.Add<Conversation>(newConvo); _repo.SaveChanges(); }
/*Done*/ public void CreateConversation(CreateConversationViewModel model) { var currUser = GetMemberByUserName(model.UserName); Conversation newConvo = new Conversation { Topic = model.NewTopic, CreatedBy = currUser, WhichFam = _repo.Find <Family>(model.FamId), IsEvent = model.IsEvent, Recurs = model.Recurs, ExpirationDate = model.ExpirationDate, CreatedDate = DateTime.Now, MessageList = new List <Message>(), VisibleTo = new List <ConversationsVisibleToMembers>() { new ConversationsVisibleToMembers { MemberId = currUser.Id } }, Attenders = new List <ConversationsAttendedByMembers> { new ConversationsAttendedByMembers { MemberId = currUser.Id } } }; if (model.FirstMessage != null && model.FirstMessage != "") { Message newMessage = new Message { Text = model.FirstMessage, Contributor = newConvo.CreatedBy, Conversation = newConvo, TimeSubmitted = DateTime.Now }; newConvo.MessageList.Add(newMessage); _repo.Add <Message>(newMessage); } _repo.Add <Conversation>(newConvo); _repo.SaveChanges(); }
public async Task <IActionResult> Create() { if (!_context.ConversationPlanDateClaims.Include(pdc => pdc.Group).Any(pdc => pdc.Group.Id == int.Parse(HttpContext.Session.GetString("Group")))) { ViewData["error"] = "De schooladministrator heeft nog geen gespreksplanning gemaakt."; return(View("Error")); } if (!_context.ConversationTypeClaims.Include(ctc => ctc.Group).Any(ctc => ctc.Group.Id == int.Parse(HttpContext.Session.GetString("Group")))) { ViewData["error"] = "De schooladministrator heeft nog geen gesprekstypes aangemaakt."; return(View("Error")); } var tempUser = await GetCurrentUser(); var user = _context.Users.Include(u => u.Group).First(u => u.Id == tempUser.Id); var model = new CreateConversationViewModel(); model.PlannableDates = new List <SelectListItem>(); model.ConversationTypes = new List <SelectListItem>(); var conversationTypes = await _context.ConversationTypeClaims.Include(ctc => ctc.Group).Include(ctc => ctc.ConversationType).Where(ctc => ctc.Group == user.Group).Select(ctc => ctc.ConversationType).ToListAsync(); foreach (var conversationType in conversationTypes) { model.ConversationTypes.Add(new SelectListItem { Value = conversationType.Id.ToString(), Text = $"{conversationType.ConversationName} ({conversationType.ConversationDuration} minuten)" }); } model.ConversationTypes[0].Selected = true; var planDates = await _context.ConversationPlanDateClaims.Include(pdc => pdc.Group).Include(pdc => pdc.ConversationPlanDate).Where(pdc => pdc.Group == user.Group).ToListAsync(); var counter = 1; foreach (var planDate in planDates) { var selectListGroup = new SelectListGroup { Name = $"Periode {counter}" }; var datesToLoop = (int)planDate.ConversationPlanDate.EndDate.Subtract(planDate.ConversationPlanDate.StartDate).TotalDays; for (int i = 0; i <= datesToLoop; i++) { var date = planDate.ConversationPlanDate.StartDate.AddDays(i); // Teachers don't work in the weekend if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) { continue; } var selectListItem = new SelectListItem(); selectListItem.Value = date.ToString("d"); selectListItem.Text = date.ToString("dddd dd-MM-yyyy"); selectListItem.Group = selectListGroup; model.PlannableDates.Add(selectListItem); } counter++; } return(View(model)); }