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)));
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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() }));
            }
        }
Exemple #7
0
        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));
        }