// GET: VenueRegistrationApplication/Details/5
        public async Task <IActionResult> Details(Guid?id)
        {
            VenueRegistrationApplicationViewModel applicationVM = new VenueRegistrationApplicationViewModel();

            try
            {
                var applicationDb = this._venueRegistrationService.FindApplicationById(id.Value);

                if (applicationDb == null)
                {
                    throw new NullReferenceException("Was not found");
                }

                applicationVM.AppliedBy   = applicationDb.AppliedBy;
                applicationVM.DateCreated = applicationDb.DateCreated;
                applicationVM.DateAppoved = applicationDb.DateAppoved;
                applicationVM.Id          = applicationDb.Id;
                applicationVM.VenueId     = applicationDb.VenueId;
                applicationVM.ApprovedBy  = applicationDb.ApprovedBy;

                var venueDbDetails = this._venueService.GetVenueById(applicationDb.VenueId);
                applicationVM.VenueDetails = new VenueViewModel {
                    Name    = venueDbDetails.Name,
                    Address = venueDbDetails.Address,
                    City    = venueDbDetails.City
                };
            }
            catch (System.Exception ex)
            {
                ModelState.AddModelError("error", ex.Message);
            }


            return(View(applicationVM));
        }
        public async Task <IActionResult> Create([Bind("Id,VenueId,DateCreated,DateAppoved")]
                                                 VenueRegistrationApplicationViewModel venueRegistrationApplicationViewModel)
        {
            if (ModelState.IsValid)
            {
                try {
                    var venueRegistration = new VenueRegistrationApplication {
                        Id          = Guid.NewGuid(),
                        VenueId     = venueRegistrationApplicationViewModel.VenueId,
                        DateCreated = DateTime.Now,
                        AppliedBy   = await this.GetUserIdAsync()
                    };

                    this._venueRegistrationService.ApplyToRegisterVenue(venueRegistration);

                    return(RedirectToAction("Index"));
                }
                catch (Exception ex) {
                    this._logger.LogError(ex.Message);
                    ModelState.AddModelError("ApplyRegistration", "Problem Creating the registration");
                }
            }

            return(View(venueRegistrationApplicationViewModel));
        }
        public IActionResult Create(Guid venueId)
        {
            var venueApplyingFor = this._venueService.GetVenueById(venueId);

            ViewData["VenueName"]    = venueApplyingFor.Name;
            ViewData["VenueAddress"] = venueApplyingFor.Address;

            var vm = new VenueRegistrationApplicationViewModel {
                VenueId = venueApplyingFor.Id
            };

            return(View(vm));
        }
        public async Task <IActionResult> Index()
        {
            List <VenueRegistrationApplicationViewModel> applications = new List <VenueRegistrationApplicationViewModel>();

            try {
                var applicationsDb = _venueRegistrationService.GetAllApplications();

                foreach (var app in applicationsDb)
                {
                    try
                    {
                        var venueDetails = _venueService.GetVenueById(app.VenueId);

                        var venueRegistrationVM = new VenueRegistrationApplicationViewModel();
                        venueRegistrationVM.Id           = app.Id;
                        venueRegistrationVM.DateCreated  = app.DateCreated;
                        venueRegistrationVM.DateAppoved  = app.DateAppoved;
                        venueRegistrationVM.ApprovedBy   = app.ApprovedBy;
                        venueRegistrationVM.VenueDetails = new VenueViewModel {
                            Name    = venueDetails.Name,
                            Address = venueDetails.Address
                        };

                        applications.Add(venueRegistrationVM);
                    }
                    catch (System.Exception ex)
                    {
                        _logger.LogError(ex.StackTrace);
                        ModelState.AddModelError("Error", ex.StackTrace);
                    }
                }

                applications = applications.OrderByDescending(x => x.DateCreated).ToList();
            }
            catch (Exception ex) {
                _logger.LogError(ex.Source);
                ModelState.AddModelError("Error", ex.StackTrace);
            }

            return(View(applications));
        }