public async Task <ActionResult> AddOrUpdateDormitoryRoom([FromQuery] bool add, [FromQuery] int?dormitoryRoomId)
        {
            var students = await _studentService.GetStudentsWithoutRooms();

            var selectStudents = _studentSelectModelMapper.Map(students).ToList();

            var dormitories = await _dormitoryService.GetAll();

            var selectDormitories = _dormitorySelectModelMapper.Map(dormitories).ToList();

            selectDormitories.Insert(0, new SelectListItem()
            {
                Value = "-1", Text = "None"
            });

            DormitoryRoomPostModel model;

            if (add)
            {
                model = new DormitoryRoomPostModel();

                ViewBag.Header = ControllerConstants.AddDormitoryRoomHeader;
            }
            else
            {
                var dormitoryRoom = await _dormitoryRoomService.GetById(dormitoryRoomId.GetValueOrDefault());

                model = _dormitoryRoomPostModelMapper.Map(dormitoryRoom);

                foreach (var student in selectStudents)
                {
                    if (model.Students.Contains(student.StudentId))
                    {
                        student.Checked = true;
                    }
                }

                if (dormitoryRoom.DormitoryName == null)
                {
                    selectDormitories[0].Selected = true;
                }
                else
                {
                    selectDormitories.Single(d => d.Text == dormitoryRoom.DormitoryName).Selected = true;
                }

                ViewBag.Header = ControllerConstants.UpdateDormitoryRoomHeader;
            }

            ViewBag.Students    = selectStudents;
            ViewBag.Dormitories = selectDormitories;

            return(View(model));
        }
 public DormitoryRoom Map(DormitoryRoomPostModel entity)
 {
     return(new DormitoryRoom
     {
         DormitoryId = entity.DormitoryId,
         DormitoryRoomName = entity.DormitoryRoomName,
         MaxCountInRoom = entity.MaxCountInRoom,
         DormitoryRoomId = entity.DormitoryRoomId,
         Roomers = entity.Students.Select(s => new Student
         {
             StudentId = s
         }).ToList()
     });
 }
        public async Task <IActionResult> AddOrUpdateDormitoryRoom(
            [FromBody] DormitoryRoomPostModel dormitoryRoomPostModel,
            [FromQuery] bool add = true)
        {
            var dormitoryRoom = _dormitoryRoomMapper.Map(dormitoryRoomPostModel);

            if (add)
            {
                await _dormitoryRoomService.AddAsync(dormitoryRoom);
            }
            else
            {
                await _dormitoryRoomService.UpdateAsync(dormitoryRoom);
            }

            await _dormitoryRoomService.SetDormitoryRoomStudentsAsync(dormitoryRoom.DormitoryRoomId,
                                                                      dormitoryRoomPostModel.Students.AsReadOnlyCollection());

            return(RedirectToAction("Index"));
        }