private async Task Initialize(AccessPointIndexViewModel model)
        {
            var accessPointsTask = _listAccessPointsRequest.Request(ListCommand.WithoutParameters);
            var departmentsTask  = _listDepartmentsRequest.Request(ListCommand.WithoutParameters);

            await Task.WhenAll(accessPointsTask, departmentsTask);

            model.AccessPoints = accessPointsTask.Result.AccessPoints;
            model.Editor.AvailableDepartments = departmentsTask.Result.Departments;
        }
        public async Task <ActionResult> Index()
        {
            var model = new AccessPointIndexViewModel {
                Editor = new EditAccessPointViewModel()
            };

            await Initialize(model);

            return(View(model));
        }
        public async Task <ActionResult> Index(AccessPointIndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                await Initialize(model);

                return(View(model));
            }

            var accessPoint = new AccessPoint(model.Editor.AccessPointId, model.Editor.Department, model.Editor.Name)
            {
                Description = model.Editor.Description
            };
            var result = await _registerAccessPointRequest.Request(new RegisterAccessPoint(accessPoint));

            if (!result.Succeded)
            {
                ModelState.AddModelError(string.Empty, result.Fault.Summary);
                return(View(model));
            }

            return(RedirectToAction("Index"));
        }