Ejemplo n.º 1
0
        public async Task <IActionResult> Create(int?id)
        {
            PageTitle = "Create Event";

            var branchList = await _siteService.GetBranches(GetId(ClaimType.SystemId));

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                CanManageLocations = UserHasPermission(Permission.ManageLocations),
                BranchList         = new SelectList(branchList, "Id", "Name"),
                LocationList       = new SelectList(locationList, "Id", "Name"),
                ProgramList        = new SelectList(programList, "Id", "Name")
            };

            if (id.HasValue)
            {
                var graEvent = await _eventService.GetDetails(id.Value);

                if (!graEvent.ParentEventId.HasValue)
                {
                    graEvent.ParentEventId = graEvent.Id;
                }
                viewModel.Event = graEvent;
            }

            return(View(viewModel));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetDetails(int eventId)
        {
            try
            {
                var viewModel = new EventsDetailViewModel
                {
                    IsAuthenticated = AuthUser.Identity.IsAuthenticated,
                    Event           = await _eventService.GetDetails(eventId)
                };

                if (viewModel.Event.ProgramId.HasValue)
                {
                    var program
                        = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);

                    viewModel.ProgramString
                        = _sharedLocalizer[Annotations.Info.EventLimitedToProgram, program.Name];
                }

                return(PartialView("_DetailPartial", viewModel));
            }
            catch (GraException gex)
            {
                Response.StatusCode = (int)HttpStatusCode.NotFound;
                return(Content(gex.Message));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Detail(int id)
        {
            var site = await GetCurrentSiteAsync();

            if (!string.IsNullOrEmpty(site.ExternalEventListUrl))
            {
                return(new RedirectResult(site.ExternalEventListUrl));
            }

            try
            {
                var viewModel = new EventsDetailViewModel
                {
                    IsAuthenticated = AuthUser.Identity.IsAuthenticated,
                    Event           = await _eventService.GetDetails(id)
                };

                PageTitle = _sharedLocalizer[Annotations.Interface.DateAtTime,
                                             viewModel.Event.Name,
                                             viewModel.Event.EventLocationName];

                if (!string.IsNullOrEmpty(viewModel.Event.EventLocationName) &&
                    !string.IsNullOrEmpty(viewModel.Event.EventLocationAddress))
                {
                    viewModel.ShowStructuredData = true;
                    if (viewModel.Event.AllDay)
                    {
                        viewModel.EventStart = viewModel.Event.StartDate.ToString("yyyy-MM-dd",
                                                                                  CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        viewModel.EventStart = viewModel.Event.StartDate.ToString("s",
                                                                                  CultureInfo.InvariantCulture);
                        if (viewModel.Event.EndDate != null)
                        {
                            var endDate = (DateTime)viewModel.Event.EndDate;
                            viewModel.EventEnd = endDate.ToString("s",
                                                                  CultureInfo.InvariantCulture);
                        }
                    }
                }

                if (viewModel.Event.ProgramId.HasValue)
                {
                    var program
                        = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);

                    viewModel.ProgramString
                        = _sharedLocalizer[Annotations.Info.EventLimitedToProgram, program.Name];
                }
                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning(gex.Message);
                return(await Index(httpStatus : HttpStatusCode.NotFound));
            }
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create(EventsDetailViewModel model)
        {
            if (model.UseLocation && !model.Event.AtLocationId.HasValue)
            {
                ModelState.AddModelError("Event.AtLocationId", "The At Location field is required.");
            }
            if (!model.UseLocation && !model.Event.AtBranchId.HasValue)
            {
                ModelState.AddModelError("Event.AtBranchId", "The At Branch field is required.");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (!string.IsNullOrWhiteSpace(model.Event.ExternalLink))
                    {
                        model.Event.ExternalLink = new UriBuilder(
                            model.Event.ExternalLink).Uri.AbsoluteUri;
                    }
                    var graEvent = model.Event;
                    if (model.UseLocation)
                    {
                        graEvent.AtBranchId = null;
                    }
                    else
                    {
                        graEvent.AtLocationId = null;
                    }
                    graEvent.IsActive = true;
                    graEvent.IsValid  = true;

                    await _eventService.Add(graEvent);

                    ShowAlertSuccess($"Event '{graEvent.Name}' created.");
                    return(RedirectToAction("Index"));
                }
                catch (GraException gex)
                {
                    ShowAlertWarning("Could not create event: ", gex.Message);
                }
            }
            PageTitle = "Create Event";

            var branchList = await _siteService.GetBranches(GetId(ClaimType.SystemId));

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            model.BranchList   = new SelectList(branchList, "Id", "Name");
            model.LocationList = new SelectList(locationList, "Id", "Name");
            model.ProgramList  = new SelectList(programList, "Id", "Name");
            return(View(model));
        }
Ejemplo n.º 5
0
        public async Task<IActionResult> GetDetails(int eventId)
        {
            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                Event = await _eventService.GetDetails(eventId)
            };
            if (viewModel.Event.ProgramId.HasValue)
            {
                var program = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);
                viewModel.ProgramString = $"This event is limited to the {program.Name} program.";
            }

            return PartialView("_DetailPartial", viewModel);
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Detail(int id)
        {
            try
            {
                EventsDetailViewModel viewModel = new EventsDetailViewModel()
                {
                    Event = await _eventService.GetDetails(id)
                };

                PageTitle = $"{viewModel.Event.Name} @ {viewModel.Event.EventLocationName}";
                if (!string.IsNullOrEmpty(viewModel.Event.EventLocationName) &&
                    !string.IsNullOrEmpty(viewModel.Event.EventLocationAddress))
                {
                    viewModel.ShowStructuredData = true;
                    if (viewModel.Event.AllDay == true)
                    {
                        viewModel.EventStart = viewModel.Event.StartDate.ToString("yyyy-MM-dd",
                                                                                  CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        viewModel.EventStart = viewModel.Event.StartDate.ToString("s",
                                                                                  CultureInfo.InvariantCulture);
                        if (viewModel.Event.EndDate != null)
                        {
                            var endDate = (DateTime)viewModel.Event.EndDate;
                            viewModel.EventEnd = endDate.ToString("s",
                                                                  CultureInfo.InvariantCulture);
                        }
                    }
                }

                if (viewModel.Event.ProgramId.HasValue)
                {
                    var program = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);

                    viewModel.ProgramString = $"This event is limited to the {program.Name} program.";
                }
                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning("Unable to view event: ", gex);
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Edit(int id)
        {
            PageTitle = "Edit Event";

            var graEvent = await _eventService.GetDetails(id);

            var systemList = await _siteService.GetSystemList(true);

            var branchList = await _siteService.GetBranches(GetId(ClaimType.SystemId));

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                Event              = graEvent,
                UseLocation        = graEvent.AtLocationId.HasValue,
                CanAddSecretCode   = UserHasPermission(Permission.ManageTriggers),
                CanManageLocations = UserHasPermission(Permission.ManageLocations),
                SystemList         = new SelectList(systemList, "Id", "Name"),
                BranchList         = new SelectList(branchList, "Id", "Name"),
                LocationList       = new SelectList(locationList, "Id", "Name"),
                ProgramList        = new SelectList(programList, "Id", "Name")
            };

            if (graEvent.AtBranchId.HasValue)
            {
                var branch = await _siteService.GetBranchByIdAsync(graEvent.AtBranchId.Value);

                viewModel.SystemId   = branch.SystemId;
                viewModel.BranchList = new SelectList(await _siteService
                                                      .GetBranches(viewModel.SystemId, true), "Id", "Name");
            }
            else
            {
                viewModel.SystemId   = GetId(ClaimType.SystemId);
                viewModel.BranchList = new SelectList(await _siteService
                                                      .GetBranches(viewModel.SystemId, true), "Id", "Name");
            }

            return(View(viewModel));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> GetDetails(int eventId)
        {
            try
            {
                EventsDetailViewModel viewModel = new EventsDetailViewModel()
                {
                    Event = await _eventService.GetDetails(eventId)
                };
                if (viewModel.Event.ProgramId.HasValue)
                {
                    var program = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);

                    viewModel.ProgramString = $"This event is limited to the {program.Name} program.";
                }

                return(PartialView("_DetailPartial", viewModel));
            }
            catch (GraException gex)
            {
                Response.StatusCode = (int)HttpStatusCode.NotFound;
                return(Content($"Unable to view event: {gex.Message}"));
            }
        }
Ejemplo n.º 9
0
        public async Task <IActionResult> Detail(int id)
        {
            try
            {
                EventsDetailViewModel viewModel = new EventsDetailViewModel()
                {
                    Event = await _eventService.GetDetails(id)
                };

                if (viewModel.Event.ProgramId.HasValue)
                {
                    var program = await _siteService.GetProgramByIdAsync(viewModel.Event.ProgramId.Value);

                    viewModel.ProgramString = $"This event is limited to the {program.Name} program.";
                }
                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning("Unable to view event: ", gex);
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> Edit(int id)
        {
            PageTitle = "Edit Event";

            var graEvent = await _eventService.GetDetails(id);

            var branchList = await _siteService.GetBranches(GetId(ClaimType.SystemId));

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                Event              = graEvent,
                UseLocation        = graEvent.AtLocationId.HasValue,
                CanManageLocations = UserHasPermission(Permission.ManageLocations),
                BranchList         = new SelectList(branchList, "Id", "Name"),
                LocationList       = new SelectList(locationList, "Id", "Name"),
                ProgramList        = new SelectList(programList, "Id", "Name")
            };

            return(View(viewModel));
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> Edit(EventsDetailViewModel model)
        {
            if (model.Event.AllDay)
            {
                if (model.Event.EndDate.HasValue && model.Event.StartDate > model.Event.EndDate)
                {
                    ModelState.AddModelError("Event.EndDate", "The End date cannot be before the Start date");
                }
            }
            else
            {
                if (model.Event.EndDate.HasValue && model.Event.StartDate.TimeOfDay
                    > model.Event.EndDate.Value.TimeOfDay)
                {
                    ModelState.AddModelError("Event.EndDate", "The End time cannot be before the Start time");
                }
            }
            if (model.UseLocation && !model.Event.AtLocationId.HasValue)
            {
                ModelState.AddModelError("Event.AtLocationId", "The At Location field is required.");
            }
            if (!model.UseLocation && !model.Event.AtBranchId.HasValue)
            {
                ModelState.AddModelError("Event.AtBranchId", "The At Branch field is required.");
            }

            if (!string.IsNullOrWhiteSpace(model.Event.ExternalLink))
            {
                try
                {
                    model.Event.ExternalLink = new UriBuilder(
                        model.Event.ExternalLink).Uri.AbsoluteUri;
                }
                catch (Exception)
                {
                    ModelState.AddModelError("Event.ExternalLink", "Invalid URL");
                }
            }

            ModelState.Remove(nameof(model.SecretCode));
            ModelState.Remove(nameof(model.AwardMessage));
            ModelState.Remove(nameof(model.AwardPoints));
            if (ModelState.IsValid)
            {
                try
                {
                    if (model.Event.ChallengeId.HasValue)
                    {
                        model.Event.ChallengeGroupId = null;
                    }
                    if (model.Event.AllDay)
                    {
                        model.Event.StartDate = model.Event.StartDate.Date;
                        if (model.Event.EndDate.HasValue)
                        {
                            if (model.Event.EndDate.Value.Date == model.Event.StartDate.Date)
                            {
                                model.Event.EndDate = null;
                            }
                            else
                            {
                                model.Event.EndDate = model.Event.EndDate.Value.Date;
                            }
                        }
                    }
                    else
                    {
                        if (model.Event.EndDate.HasValue)
                        {
                            if (model.Event.EndDate.Value.TimeOfDay == model.Event.StartDate.TimeOfDay)
                            {
                                model.Event.EndDate = null;
                            }
                            else
                            {
                                model.Event.EndDate = model.Event.StartDate.Date
                                                      + model.Event.EndDate.Value.TimeOfDay;
                            }
                        }
                    }

                    var graEvent = model.Event;
                    if (model.UseLocation)
                    {
                        graEvent.AtBranchId = null;
                    }
                    else
                    {
                        graEvent.AtLocationId = null;
                    }

                    await _eventService.Edit(graEvent);

                    ShowAlertSuccess($"Event '{graEvent.Name}' edited.");
                    if (graEvent.IsCommunityExperience)
                    {
                        return(RedirectToAction("CommunityExperiences"));
                    }
                    return(RedirectToAction("Index"));
                }
                catch (GraException gex)
                {
                    ShowAlertWarning("Could not edit event: ", gex.Message);
                }
            }
            PageTitle = "Edit Event";

            model.Event = await _eventService.GetRelatedChallengeDetails(model.Event, true);

            var systemList = await _siteService.GetSystemList(true);

            var branchList = await _siteService.GetBranches(model.SystemId, true);

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            model.SystemList   = new SelectList(systemList, "Id", "Name");
            model.BranchList   = new SelectList(branchList, "Id", "Name");
            model.LocationList = new SelectList(locationList, "Id", "Name");
            model.ProgramList  = new SelectList(programList, "Id", "Name");
            return(View(model));
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> Edit(int id)
        {
            try
            {
                var graEvent = await _eventService.GetDetails(id, true);

                PageTitle = graEvent.IsCommunityExperience
                    ? "Edit Community Experience"
                    : "Edit Event";

                var systemList = await _siteService.GetSystemList(true);

                var branchList = await _siteService.GetBranches(GetId(ClaimType.SystemId));

                var locationList = await _eventService.GetLocations();

                var programList = await _siteService.GetProgramList();

                EventsDetailViewModel viewModel = new EventsDetailViewModel()
                {
                    Event              = graEvent,
                    UseLocation        = graEvent.AtLocationId.HasValue,
                    CanAddSecretCode   = UserHasPermission(Permission.ManageTriggers),
                    CanEditGroups      = UserHasPermission(Permission.EditChallengeGroups),
                    CanManageLocations = UserHasPermission(Permission.ManageLocations),
                    CanRelateChallenge = UserHasPermission(Permission.ViewAllChallenges),
                    SystemList         = new SelectList(systemList, "Id", "Name"),
                    BranchList         = new SelectList(branchList, "Id", "Name"),
                    LocationList       = new SelectList(locationList, "Id", "Name"),
                    ProgramList        = new SelectList(programList, "Id", "Name")
                };

                if (graEvent.AtBranchId.HasValue)
                {
                    var branch = await _siteService.GetBranchByIdAsync(graEvent.AtBranchId.Value);

                    viewModel.SystemId   = branch.SystemId;
                    viewModel.BranchList = new SelectList(await _siteService
                                                          .GetBranches(viewModel.SystemId, true), "Id", "Name");
                }
                else
                {
                    viewModel.SystemId   = GetId(ClaimType.SystemId);
                    viewModel.BranchList = new SelectList(await _siteService
                                                          .GetBranches(viewModel.SystemId, true), "Id", "Name");
                }

                if (graEvent.Challenge?.BadgeId != null)
                {
                    var badge = await _badgeService.GetByIdAsync(graEvent.Challenge.BadgeId.Value);

                    graEvent.Challenge.BadgeFilename = _pathResolver
                                                       .ResolveContentPath(badge.Filename);
                }

                return(View(viewModel));
            }
            catch (GraException gex)
            {
                ShowAlertWarning("Unable to view event/community experience: ", gex);
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> Create(EventsDetailViewModel model)
        {
            var requireSecretCode = await GetSiteSettingBoolAsync(
                SiteSettingKey.Events.RequireBadge);

            if (model.Event.AllDay)
            {
                if (model.Event.EndDate.HasValue && model.Event.StartDate > model.Event.EndDate)
                {
                    ModelState.AddModelError("Event.EndDate", "The End date cannot be before the Start date");
                }
            }
            else
            {
                if (model.Event.EndDate.HasValue && model.Event.StartDate.TimeOfDay
                    > model.Event.EndDate.Value.TimeOfDay)
                {
                    ModelState.AddModelError("Event.EndDate", "The End time cannot be before the Start time");
                }
            }
            if (model.UseLocation && !model.Event.AtLocationId.HasValue)
            {
                ModelState.AddModelError("Event.AtLocationId", "The At Location field is required.");
            }
            if (!model.UseLocation && !model.Event.AtBranchId.HasValue)
            {
                ModelState.AddModelError("Event.AtBranchId", "The At Branch field is required.");
            }
            if (model.IncludeSecretCode || requireSecretCode)
            {
                if (string.IsNullOrWhiteSpace(model.BadgeMakerImage) && model.BadgeUploadImage == null)
                {
                    ModelState.AddModelError("BadgemakerImage", "A badge is required.");
                }
                else if (model.BadgeUploadImage != null &&
                         (string.IsNullOrWhiteSpace(model.BadgeMakerImage) || !model.UseBadgeMaker) &&
                         (Path.GetExtension(model.BadgeUploadImage.FileName).ToLower() != ".jpg" &&
                          Path.GetExtension(model.BadgeUploadImage.FileName).ToLower() != ".jpeg" &&
                          Path.GetExtension(model.BadgeUploadImage.FileName).ToLower() != ".png"))
                {
                    ModelState.AddModelError("BadgeUploadImage", "Please use a .jpg or .png image.");
                }
            }
            else
            {
                ModelState.Remove(nameof(model.SecretCode));
                ModelState.Remove(nameof(model.AwardMessage));
                ModelState.Remove(nameof(model.AwardPoints));
            }

            if (!string.IsNullOrWhiteSpace(model.Event.ExternalLink))
            {
                try
                {
                    model.Event.ExternalLink = new UriBuilder(
                        model.Event.ExternalLink).Uri.AbsoluteUri;
                }
                catch (Exception)
                {
                    ModelState.AddModelError("Event.ExternalLink", "Invalid URL");
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (model.Event.ChallengeId.HasValue)
                    {
                        model.Event.ChallengeGroupId = null;
                    }
                    if (model.Event.AllDay)
                    {
                        model.Event.StartDate = model.Event.StartDate.Date;
                        if (model.Event.EndDate.HasValue)
                        {
                            if (model.Event.EndDate.Value.Date == model.Event.StartDate.Date)
                            {
                                model.Event.EndDate = null;
                            }
                            else
                            {
                                model.Event.EndDate = model.Event.EndDate.Value.Date;
                            }
                        }
                    }
                    else
                    {
                        if (model.Event.EndDate.HasValue)
                        {
                            if (model.Event.EndDate.Value.TimeOfDay == model.Event.StartDate.TimeOfDay)
                            {
                                model.Event.EndDate = null;
                            }
                            else
                            {
                                model.Event.EndDate = model.Event.StartDate.Date
                                                      + model.Event.EndDate.Value.TimeOfDay;
                            }
                        }
                    }

                    int?triggerId = null;
                    if (model.IncludeSecretCode)
                    {
                        byte[] badgeBytes;
                        string filename;
                        if (!string.IsNullOrWhiteSpace(model.BadgeMakerImage) &&
                            (model.BadgeUploadImage == null || model.UseBadgeMaker))
                        {
                            var badgeString = model.BadgeMakerImage.Split(',').Last();
                            badgeBytes = Convert.FromBase64String(badgeString);
                            filename   = "badge.png";
                        }
                        else
                        {
                            using (var fileStream = model.BadgeUploadImage.OpenReadStream())
                            {
                                using (var ms = new MemoryStream())
                                {
                                    fileStream.CopyTo(ms);
                                    badgeBytes = ms.ToArray();
                                }
                            }
                            filename = Path.GetFileName(model.BadgeUploadImage.FileName);
                        }
                        Badge newBadge = new Badge()
                        {
                            Filename = filename
                        };
                        var badge = await _badgeService.AddBadgeAsync(newBadge, badgeBytes);

                        Trigger trigger = new Trigger
                        {
                            Name         = $"Event '{model.Event.Name}' code",
                            SecretCode   = model.SecretCode,
                            AwardMessage = model.AwardMessage,
                            AwardPoints  = model.AwardPoints,
                            AwardBadgeId = badge.Id,
                        };
                        triggerId = (await _triggerService.AddAsync(trigger)).Id;
                    }

                    var graEvent = model.Event;
                    if (model.UseLocation)
                    {
                        graEvent.AtBranchId = null;
                    }
                    else
                    {
                        graEvent.AtLocationId = null;
                    }
                    graEvent.IsActive = true;
                    graEvent.IsValid  = true;

                    if (triggerId.HasValue)
                    {
                        graEvent.RelatedTriggerId = triggerId;
                    }

                    await _eventService.Add(graEvent);

                    ShowAlertSuccess($"Event '{graEvent.Name}' created.");
                    if (graEvent.IsCommunityExperience)
                    {
                        return(RedirectToAction("CommunityExperiences"));
                    }
                    return(RedirectToAction("Index"));
                }
                catch (GraException gex)
                {
                    ShowAlertWarning("Could not create event: ", gex.Message);
                }
            }
            PageTitle = "Create Event";

            var systemList = await _siteService.GetSystemList(true);

            var branchList = await _siteService.GetBranches(model.SystemId, true);

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            model.SystemList        = new SelectList(systemList, "Id", "Name");
            model.BranchList        = new SelectList(branchList, "Id", "Name");
            model.LocationList      = new SelectList(locationList, "Id", "Name");
            model.ProgramList       = new SelectList(programList, "Id", "Name");
            model.RequireSecretCode = requireSecretCode;
            return(View(model));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Create(int?id, bool communityExperience = false)
        {
            PageTitle = communityExperience == true
                ? "Create Community Experience"
                : "Create Event";

            var requireSecretCode = await GetSiteSettingBoolAsync(
                SiteSettingKey.Events.RequireBadge);

            var systemList = await _siteService.GetSystemList(true);

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                CanAddSecretCode = requireSecretCode ||
                                   UserHasPermission(Permission.ManageTriggers),
                CanManageLocations = UserHasPermission(Permission.ManageLocations),
                CanRelateChallenge = UserHasPermission(Permission.ViewAllChallenges),
                SystemList         = new SelectList(systemList, "Id", "Name"),
                LocationList       = new SelectList(locationList, "Id", "Name"),
                ProgramList        = new SelectList(programList, "Id", "Name"),
                IncludeSecretCode  = requireSecretCode,
                RequireSecretCode  = requireSecretCode
            };

            if (viewModel.CanAddSecretCode)
            {
                var site = await GetCurrentSiteAsync();

                var siteUrl = await _siteService.GetBaseUrl(Request.Scheme, Request.Host.Value);

                viewModel.BadgeMakerUrl = GetBadgeMakerUrl(siteUrl, site.FromEmailAddress);
                viewModel.UseBadgeMaker = true;
            }

            if (id.HasValue)
            {
                try
                {
                    var graEvent = await _eventService.GetDetails(id.Value,
                                                                  viewModel.CanRelateChallenge);

                    if (!graEvent.ParentEventId.HasValue)
                    {
                        graEvent.ParentEventId = graEvent.Id;
                    }
                    viewModel.Event = graEvent;
                    viewModel.Event.RelatedTriggerId = null;
                    if (graEvent.AtBranchId.HasValue)
                    {
                        var branch = await _siteService.GetBranchByIdAsync(graEvent.AtBranchId.Value);

                        viewModel.SystemId   = branch.SystemId;
                        viewModel.BranchList = new SelectList(await _siteService
                                                              .GetBranches(viewModel.SystemId, true), "Id", "Name");
                    }
                }
                catch (GraException gex)
                {
                    ShowAlertWarning("Unable to copy event: ", gex);
                }
            }

            if (viewModel.BranchList == null)
            {
                viewModel.SystemId   = GetId(ClaimType.SystemId);
                viewModel.BranchList = new SelectList(await _siteService
                                                      .GetBranches(viewModel.SystemId, true), "Id", "Name");
            }
            if (communityExperience)
            {
                viewModel.NewCommunityExperience = true;
                viewModel.UseLocation            = true;
            }

            return(View(viewModel));
        }
Ejemplo n.º 15
0
        public async Task <IActionResult> Create(int?id, bool communityExperience = false)
        {
            PageTitle = "Create Event";

            var systemList = await _siteService.GetSystemList(true);

            var locationList = await _eventService.GetLocations();

            var programList = await _siteService.GetProgramList();

            EventsDetailViewModel viewModel = new EventsDetailViewModel()
            {
                CanAddSecretCode   = UserHasPermission(Permission.ManageTriggers),
                CanManageLocations = UserHasPermission(Permission.ManageLocations),
                SystemList         = new SelectList(systemList, "Id", "Name"),
                LocationList       = new SelectList(locationList, "Id", "Name"),
                ProgramList        = new SelectList(programList, "Id", "Name")
            };

            if (viewModel.CanAddSecretCode)
            {
                var site = await GetCurrentSiteAsync();

                var siteUrl = await _siteService.GetBaseUrl(Request.Scheme, Request.Host.Value);

                viewModel.BadgeMakerUrl = GetBadgeMakerUrl(siteUrl, site.FromEmailAddress);
                viewModel.UseBadgeMaker = true;
            }

            if (id.HasValue)
            {
                var graEvent = await _eventService.GetDetails(id.Value);

                if (!graEvent.ParentEventId.HasValue)
                {
                    graEvent.ParentEventId = graEvent.Id;
                }
                viewModel.Event = graEvent;
                viewModel.Event.RelatedTriggerId = null;
                if (graEvent.AtBranchId.HasValue)
                {
                    var branch = await _siteService.GetBranchByIdAsync(graEvent.AtBranchId.Value);

                    viewModel.SystemId   = branch.SystemId;
                    viewModel.BranchList = new SelectList(await _siteService
                                                          .GetBranches(viewModel.SystemId, true), "Id", "Name");
                }
            }

            if (viewModel.BranchList == null)
            {
                viewModel.SystemId   = GetId(ClaimType.SystemId);
                viewModel.BranchList = new SelectList(await _siteService
                                                      .GetBranches(viewModel.SystemId, true), "Id", "Name");
            }
            if (communityExperience)
            {
                viewModel.NewCommunityExperience = true;
            }

            return(View(viewModel));
        }