public ActionResult Edit(int id, FormCollection fc, List <AgentBankModel> AgentBankModel)
        {
            AgencyModel model = new AgencyModel();
            var         ts    = (TravelSession)Session["TravelPortalSessionInfo"];

            model               = ser.SignUpAgentsDetail(id);
            model.CreatedBy     = ts.AppUserId;
            model.CreatedbyUser = ts.AppUserId;
            try
            {
                int[] ChkProductId = new int[1] {
                    1
                };
                int agentID = ser.Create(model, AgentBankModel, ChkProductId, fc);
                ser.UpdateSignUpAgent(id, agentID);
                ser.Approve(id);

                SecureQueryString qs = new SecureQueryString(mKey);
                model.domainname         = UrlHelperExtensions.AbsolutePath(HttpContext.Request.Url.OriginalString);
                model.UrlLinktoSendLocal = UrlHelperExtensions.AbsolutePath(HttpContext.Request.Url.OriginalString); //ConfigurationManager.AppSettings["LoginPageUrlLocal"];
                model.UrlLinktoSendLive  = "https://agent.arihantholidays.com/";                                     //ConfigurationManager.AppSettings["LoginPageUrlLive"];
                string htmlContent = RenderPartialViewToString("EMailTemplate", model);
                var    result      = ser.SendEmail(htmlContent, id, "Agency Confirmation Mail");
                return(RedirectToAction("Index", "AgentManagement"));
            }
            catch (Exception ex)
            {
                TempData["ErrorMessage"] = ex.Message;
                return(RedirectToAction("Detail", new { id = id }));
            }
        }
示例#2
0
        public async Task PostNewJobOpportunity(JobOpportunity jobOpportunity, UrlHelper urlHelper)
        {
            if (string.IsNullOrWhiteSpace(jobOpportunity?.Title) || jobOpportunity.Id <= 0)
            {
                return;
            }

            var length  = 80;
            var hashtag = string.Empty;

            if (jobOpportunity.IsRemote)
            {
                length  = 64;
                hashtag = " #weworkremotely";
            }

            var title = jobOpportunity.Title.Length > length
                ? jobOpportunity.Title.Substring(0, length)
                : jobOpportunity.Title;

            var action  = UrlHelperExtensions.SeoUrl(jobOpportunity.Id, jobOpportunity.Title);
            var url     = urlHelper.AbsoluteUrl(action, "jobs");
            var message = $"Se busca: {title}{hashtag} {url}";

            await PostTweet(message).ConfigureAwait(false);
        }
示例#3
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options => {
                options.EnableEndpointRouting = false;
            });

            // Configuration
            services.AddOptions();
            services.Configure <Settings>(Configuration);
            int assetVersion = Configuration.GetValue <int>("AssetVersion");

            if (!UrlHelperExtensions.SetAssetVersionIfUnset(assetVersion))
            {
                throw new System.Exception("Asset value already set, which must not happen.");
            }

            // Database repositories
            services.AddSingleton <IAttemptRepository, AttemptRepository>();
            services.AddSingleton <ICommentRepository, CommentRepository>();
            services.AddSingleton <ICommentVoteRepository, CommentVoteRepository>();
            services.AddSingleton <ICounterRepository, CounterRepository>();
            services.AddSingleton <IGameRepository, GameRepository>();
            services.AddSingleton <INotificationRepository, NotificationRepository>();
            services.AddSingleton <IPositionRepository, PositionRepository>();
            services.AddSingleton <IPuzzleRepository, PuzzleRepository>();
            services.AddSingleton <IRatingRepository, RatingRepository>();
            services.AddSingleton <IReportRepository, ReportRepository>();
            services.AddSingleton <ISavedLoginRepository, SavedLoginRepository>();
            services.AddSingleton <ITimedTrainingScoreRepository, TimedTrainingScoreRepository>();
            services.AddSingleton <IUserRepository, UserRepository>();
            services.AddSingleton <ITagRepository, TagRepository>();

            // Memory repositories
            services.AddSingleton <IEndgameTrainingSessionRepository, EndgameTrainingSessionRepository>();
            services.AddSingleton <IGameRepoForSocketHandlers, GameRepoForSocketHandlers>();
            services.AddSingleton <IGameSocketHandlerRepository, GameSocketHandlerRepository>();
            services.AddSingleton <ILobbySeekRepository, LobbySeekRepository>();
            services.AddSingleton <ILobbySocketHandlerRepository, LobbySocketHandlerRepository>();
            services.AddSingleton <IPuzzlesBeingEditedRepository, PuzzlesBeingEditedRepository>();
            services.AddSingleton <IPuzzleTrainingSessionRepository, PuzzleTrainingSessionRepository>();
            services.AddSingleton <ITimedTrainingSessionRepository, TimedTrainingSessionRepository>();

            // Miscellaneous services
            services.AddSingleton <IEmailSender, EmailSender>();
            services.AddSingleton <IGameConstructor, GameConstructor>();
            services.AddSingleton <IMoveCollectionTransformer, MoveCollectionTransformer>();
            services.AddSingleton <IPasswordHasher, PasswordHasher>();
            services.AddSingleton <IPersistentLoginHandler, PersistentLoginHandler>();
            services.AddSingleton <IRandomProvider, RandomProvider>();
            services.AddSingleton <IRatingUpdater, RatingUpdater>();
            services.AddSingleton <IUserVerifier, UserVerifier>();
            services.AddSingleton <IValidator, Validator>();

            services.Configure <RouteOptions>(options =>
            {
                options.ConstraintMap.Add("supportedVariantOrMixed", typeof(SupportedVariantOrMixedRouteConstraint));
                options.ConstraintMap.Add("supportedVariant", typeof(SupportedVariantRouteConstraint));
            });
            services.AddSession();
        }
        public async Task <ActionResult> Wizard(Wizard model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model)
                       .WithError("Han ocurrido errores de validación que no permiten continuar el proceso"));
            }

            var jobOpportunity = model.ToEntity();
            var jobExists      = _jobOpportunityService.JobExists(model.Id);

            if (!jobExists)
            {
                _jobOpportunityService.CreateNewJobOpportunity(jobOpportunity, User.Identity.GetUserId());
            }
            else
            {
                _jobOpportunityService.UpdateJobOpportunity(model.Id, model.ToEntity());
            }

            await _twitterService.PostNewJobOpportunity(jobOpportunity, Url);

            return(RedirectToAction(nameof(Detail), new
            {
                id = UrlHelperExtensions.SeoUrl(jobOpportunity.Id, jobOpportunity.Title),
                fromWizard = 1
            }));
        }
示例#5
0
        public async Task <ActionResult> New(NewJobOpportunityViewModel model, bool captchaValid)
        {
            if (!ModelState.IsValid)
            {
                return(View(model)
                       .WithError("Han ocurrido errores de validación que no permiten continuar el proceso"));
            }

            if (string.IsNullOrWhiteSpace(model.LocationPlaceId))
            {
                ModelState.AddModelError("LocationName", "");
                return(View(model).WithError("Debe seleccionar una Localidad."));
            }

            var jobOpportunity = model.ToEntity();

            _jobOpportunityService.CreateNewJobOpportunity(jobOpportunity);

            await _twitterService.PostNewJobOpportunity(jobOpportunity);

            return(RedirectToAction("Detail", new
            {
                id = UrlHelperExtensions.SeoUrl(jobOpportunity.Id, jobOpportunity.Title)
            }));
        }
示例#6
0
        private string GetParentUrl(string baseUri, string blobPrefix)
        {
            var segments   = GetOutlineFromUrl(blobPrefix);
            var parentPath = string.Join(Delimiter, segments.Take(segments.Length - 1));

            return(UrlHelperExtensions.Combine(baseUri, EscapeUri(parentPath)));
        }
示例#7
0
        protected virtual async Task MoveAsync(string oldUrl, string newUrl, bool isCopy = false)
        {
            string oldPath, newPath;
            var    isFolderRename = string.IsNullOrEmpty(Path.GetFileName(oldUrl));

            var containerName = GetContainerNameFromUrl(oldUrl);

            //if rename file
            if (!isFolderRename)
            {
                oldPath = GetFilePathFromUrl(oldUrl);
                newPath = GetFilePathFromUrl(newUrl);
            }
            else
            {
                oldPath = GetDirectoryPathFromUrl(oldUrl);
                newPath = GetDirectoryPathFromUrl(newUrl);
            }

            var taskList      = new List <Task>();
            var blobContainer = _blobServiceClient.GetBlobContainerClient(containerName);
            var blobItems     = blobContainer.GetBlobsAsync(prefix: oldPath);

            await foreach (var blobItem in blobItems)
            {
                var blobName    = UrlHelperExtensions.Combine(containerName, blobItem.Name);
                var newBlobName = blobName.Replace(oldPath, newPath);

                taskList.Add(MoveBlob(blobContainer, blobName, newBlobName, isCopy));
            }

            await Task.WhenAll(taskList);
        }
        public void AbsoluteRoute_SchemeChange(string requestScheme, string routeScheme, string routeDomain)
        {
            // Arrange
            var variables = new NameValueCollection();

            variables.Add("X_FORWARDED_PROTO", requestScheme);
            m_mockHttpContext.Setup(context => context.Request.ServerVariables).Returns(variables);
            var headers = new NameValueCollection();

            headers.Add("Host", "example.org");
            m_mockHttpContext.Setup(context => context.Request.Headers).Returns(headers);
            var defaults = new RouteValueDictionary();

            defaults.Add("domain", routeDomain);
            defaults.Add("scheme", routeScheme);
            var route     = new Route("index.html", defaults, new StopRoutingHandler());
            var routeData = new RouteData();
            var routes    = new RouteCollection();

            routes.Add("x", route);
            var helper = new UrlHelper(new RequestContext(m_mockHttpContext.Object, routeData), routes);

            // Act
            var result = UrlHelperExtensions.AbsoluteRouteUrl(helper, m_mockHttpContext.Object, "x", null);

            // Assert
            Assert.Equal(routeScheme + "://example.org/index.html", result);
        }
示例#9
0
        public virtual async Task RemoveAsync(string[] urls)
        {
            foreach (var url in urls)
            {
                var absoluteUri = url.IsAbsoluteUrl()
                    ? new Uri(url).ToString()
                    : UrlHelperExtensions.Combine(_blobServiceClient.Uri.ToString(), url);
                var blobContainer = GetBlobContainer(GetContainerNameFromUrl(absoluteUri));

                var isFolder         = string.IsNullOrEmpty(Path.GetFileName(absoluteUri));
                var blobSearchPrefix = isFolder ? GetDirectoryPathFromUrl(absoluteUri)
                                             : GetFilePathFromUrl(absoluteUri);

                if (string.IsNullOrEmpty(blobSearchPrefix))
                {
                    await blobContainer.DeleteIfExistsAsync();
                }
                else
                {
                    var blobItems = blobContainer.GetBlobsAsync(prefix: blobSearchPrefix);
                    await foreach (var blobItem in blobItems)
                    {
                        var blobClient = blobContainer.GetBlobClient(blobItem.Name);
                        await blobClient.DeleteIfExistsAsync();
                    }
                }
            }
        }
示例#10
0
        public void ParseQueryString_admits_no_question_mark()
        {
            var d = UrlHelperExtensions.ParseQueryString("pep=1");

            Assert.AreEqual(1, d.Count);
            Assert.AreEqual("1", d["pep"]);
        }
示例#11
0
        public static MvcForm ModularBeginForm <TController>(this HtmlHelper helper, Expression <Action <TController> > expression, FormMethod method, object arguments, object htmlAttributes) where TController : ControllerBase
        {
            string actionName, controllerName, areaName, moduleName;

            UrlHelperExtensions.DetermineParameters <TController>(expression, helper.RouteCollection, out actionName, out controllerName, out areaName, out moduleName);
            return(ModularBeginForm(helper, actionName, controllerName, areaName, moduleName, method, arguments, htmlAttributes));
        }
        public static void ModularRenderAction <TController>(this HtmlHelper helper, Expression <Action <TController> > expression, RouteValueDictionary arguments) where TController : ControllerBase
        {
            string actionName, controllerName, areaName, moduleName;

            UrlHelperExtensions.DetermineParameters <TController>(expression, helper.RouteCollection, out actionName, out controllerName, out areaName, out moduleName);
            ModularRenderAction(helper, actionName, controllerName, areaName, moduleName, arguments);
        }
示例#13
0
        public void ParseQueryString_url_decodes()
        {
            var d = UrlHelperExtensions.ParseQueryString("?pep=1&Nothing=%3D%25");

            Assert.AreEqual(2, d.Count);
            Assert.AreEqual("=%", d["nothing"]);
        }
        public async Task SendVerificationEmail(IdentityUserViewModel model)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    throw new Exception($"Unable to load user");
                }

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = UrlHelperExtensions.EmailConfirmationLink(user.Id, code);

                var email = user.Email;
                await _emailSender.SendEmailAsync(email, "Confirm email", callbackUrl);

                _logger.LogInformation($"Verification email sent to {user.Id}.");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);
            }
        }
        public static MvcForm BeginAjaxForm(this IHtmlHelper htmlHelper, string actionName, string controllerName, RouteValueDictionary routeValues, FormMethod method, AjaxFormOptions options, IDictionary <string, object> htmlAttributes)
        {
            var    actionContext = new ActionContext(htmlHelper.ViewContext.HttpContext, htmlHelper.ViewContext.HttpContext.GetRouteData(), new ActionDescriptor());
            string formAction    = UrlHelperExtensions.Action(new UrlHelper(actionContext), actionName, controllerName, routeValues ?? new RouteValueDictionary());

            return(FormHelper(htmlHelper, formAction, method, options, htmlAttributes));
        }
        public async Task <IOperationResult> CreateRegisterInvite(string toEmail)
        {
            try
            {
                var userToCreate = new ApplicationUser
                {
                    Email    = toEmail,
                    UserName = toEmail
                };

                await _userManager.CreateAsync(userToCreate);

                var createdUser = await _userManager.FindByEmailAsync(userToCreate.Email);

                await _userManager.SetLockoutEnabledAsync(createdUser, true);

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(createdUser);

                var emailBody =
                    $@"Accept invite: {UrlHelperExtensions.ConfirmInviteCallbackLink(createdUser.Id, code)}";
                await _emailSender.SendEmailAsync(createdUser.Email, "Accept invite", emailBody);

                return(OperationResult.Success);
            }
            catch (Exception ex)
            {
                return(OperationResult.Failed(ex.Message));
            }
        }
        public async Task New_POST_ValidModel_CreatesJob_PostsTweet_RedirectsToDetail()
        {
            // Arrange
            var model = new NewJobOpportunityViewModel {
                Title             = "myTitle",
                Category          = JobCategory.MobileDevelopment,
                Description       = "My description",
                CompanyName       = "Company",
                CompanyUrl        = "http://example.com",
                CompanyLogoUrl    = "http://example.com/logo.png",
                CompanyEmail      = "*****@*****.**",
                IsRemote          = true,
                LocationName      = "My location",
                LocationPlaceId   = "123",
                LocationLatitude  = "18.3939393",
                LocationLongitude = "-69.22222",
                JobType           = JobType.FullTime
            };

            _sut.ControllerContext = GenerateControllerContext(_sut);
            _jobOpportunityService.WhenForAnyArgs(x => x.CreateNewJobOpportunity(null, null))
            .Do(x => { x.Arg <JobOpportunity>().Id = 1; });

            // Act
            var result = (RedirectToRouteResult)await _sut.New(model, false);

            // Assert
            _jobOpportunityService.Received(1).CreateNewJobOpportunity(
                Arg.Do <JobOpportunity>(entity => VerifyGeneratedJobOpportunityEntity(model, entity)), null);
            await _twitterService.Received(1).PostNewJobOpportunity(
                Arg.Do <JobOpportunity>(entity => VerifyGeneratedJobOpportunityEntity(model, entity)));

            result.RouteValues["action"].Should().Be(nameof(_sut.Detail));
            result.RouteValues["id"].Should().Be(UrlHelperExtensions.SeoUrl(1, "myTitle"));
        }
示例#18
0
        public ActionResult Create()
        {
            ContentsModel model = new ContentsModel();

            model.DomainName = UrlHelperExtensions.AbsolutePath(HttpContext.Request.Url.OriginalString);
            return(View(model));
        }
        public static MvcHtmlString ModularAction <TController>(this HtmlHelper helper, Expression <Func <TController, object> > expression, RouteValueDictionary arguments) where TController : ControllerBase
        {
            string actionName, controllerName, areaName, moduleName;

            UrlHelperExtensions.DetermineParameters <TController>(expression, helper.RouteCollection, out actionName, out controllerName, out areaName, out moduleName);
            return(ModularAction(helper, actionName, controllerName, areaName, moduleName, arguments));
        }
示例#20
0
        public async Task <IActionResult> Logout(LogoutInputModel model)
        {
            // build a model so the logged out page knows what to display
            var vm = await _account.BuildLoggedOutViewModelAsync(model.LogoutId);

            var user = HttpContext.User;

            if (user?.Identity.IsAuthenticated == true)
            {
                // delete local authentication cookie
                await HttpContext.SignOutAsync();

                // raise the logout event
                await _events.RaiseAsync(new UserLogoutSuccessEvent(user.GetSubjectId(), user.GetDisplayName()));
            }

            // check if we need to trigger sign-out at an upstream identity provider
            if (vm.TriggerExternalSignout)
            {
                // build a return URL so the upstream provider will redirect back
                // to us after the user has logged out. this allows us to then
                // complete our single sign-out processing.
                string url = UrlHelperExtensions.Action(Url, "Logout", new { logoutId = vm.LogoutId });

                // this triggers a redirect to the external provider for sign-out
                return(SignOut(new AuthenticationProperties {
                    RedirectUri = url
                }, vm.ExternalAuthenticationScheme));
            }

            return(View("LoggedOut", vm));
        }
示例#21
0
        public async Task <IActionResult> Forgot([FromBody] AccountDTO dto)
        {
            if (!IsPopulated(dto?.email))
            {
                return(BadRequest());
            }

            var user = await _userManager.FindByEmailAsync(dto.Username);

            if (user == null)
            {
                return(BadRequest("@UnknownUser"));
            }

            var code = await _userManager.GeneratePasswordResetTokenAsync(user);

            var callbackUrl = UrlHelperExtensions.Action(Url, "Index", "Home", new { reset = dto.Username, code = code }, HttpContext.Request.Scheme);

            _logger.LogInformation(5, $"User {dto.Username} requested a password reset link.");
            var subject = dto.messages != null && dto.messages.Length > 0 && !string.IsNullOrWhiteSpace(dto.messages[0]) ? dto.messages[0] : "Tracktor - password reset";
            var body    = dto.messages != null && dto.messages.Length > 1 && !string.IsNullOrWhiteSpace(dto.messages[1]) ? dto.messages[1] : "Please click the link below to reset your password.";
            await _emailSender.SendEmailAsync(dto.Username, subject, body, callbackUrl);

            return(Ok());
        }
示例#22
0
        public void ParseQueryString_admits_duplicate_parameters_but_keeps_last()
        {
            var d = UrlHelperExtensions.ParseQueryString("pep=1&pep=2");

            Assert.AreEqual(1, d.Count);
            Assert.AreEqual("2", d["pep"]);
        }
        public async Task <ActionResult> New(NewJobOpportunityViewModel model, bool captchaValid)
        {
            if (!ModelState.IsValid)
            {
                return(View(model)
                       .WithError("Han ocurrido errores de validación que no permiten continuar el proceso"));
            }

            if (string.IsNullOrWhiteSpace(model.LocationPlaceId))
            {
                ModelState.AddModelError(nameof(model.LocationName), "");
                return(View(model).WithError("Debe seleccionar una Localidad."));
            }

            if (!string.IsNullOrWhiteSpace(model.CompanyLogoUrl) && !UrlHelperExtensions.IsImageAvailable(model.CompanyLogoUrl))
            {
                return(View(model).WithError("La url del logo debe ser a una imagen en formato png o jpg"));
            }

            var jobOpportunity = model.ToEntity();
            var userId         = User.Identity.GetUserId();

            _jobOpportunityService.CreateNewJobOpportunity(jobOpportunity, userId);

            await _twitterService.PostNewJobOpportunity(jobOpportunity, Url).ConfigureAwait(false);

            return(RedirectToAction(nameof(Detail), new
            {
                id = UrlHelperExtensions.SeoUrl(jobOpportunity.Id, jobOpportunity.Title)
            }));
        }
示例#24
0
        public IBlobContentStorageProvider CreateProvider(string basePath)
        {
            var clonedOptions = _options.Clone() as AzureContentBlobOptions;

            clonedOptions.RootPath = UrlHelperExtensions.Combine(clonedOptions.RootPath, basePath);
            return(new AzureContentBlobStorageProvider(new OptionsWrapper <AzureContentBlobOptions>(clonedOptions), _platformOptions, _settingsManager));
        }
示例#25
0
        public void ParseQueryString_admits_extra_ampersands()
        {
            var d = UrlHelperExtensions.ParseQueryString("?&pep=&&&Nothing=&");

            Assert.AreEqual(2, d.Count);
            Assert.AreEqual("", d["pep"]);
            Assert.AreEqual("", d["Nothing"]);
        }
示例#26
0
        public void ParseQueryString_admits_empty_parameters()
        {
            var d = UrlHelperExtensions.ParseQueryString("?pep=&Nothing=");

            Assert.AreEqual(2, d.Count);
            Assert.AreEqual("", d["pep"]);
            Assert.AreEqual("", d["Nothing"]);
        }
示例#27
0
        public void DictToQuerystring_url_encodes()
        {
            var s = UrlHelperExtensions.DictToQuerystring(new Dictionary <string, string> {
                { "pp", "==" },
            });

            Assert.AreEqual("pp=%3d%3d", s);
        }
示例#28
0
        public void DictToQuerystring_empty_key()
        {
            var s = UrlHelperExtensions.DictToQuerystring(new Dictionary <string, string> {
                { "", "a" },
            });

            Assert.AreEqual("", s);
        }
示例#29
0
        public void DictToQuerystring_null_value()
        {
            var s = UrlHelperExtensions.DictToQuerystring(new Dictionary <string, string> {
                { "pp", null },
            });

            Assert.AreEqual("pp=", s);
        }
示例#30
0
        public static void ModularRenderPartial <TController>(this HtmlHelper helper, string partialViewName, Object model, ViewDataDictionary viewData) where TController : ControllerBase
        {
            string controllerName, areaName, moduleName;

            controllerName = UrlHelperExtensions.GetControllerName <TController>();
            UrlHelperExtensions.DetermineAreaAndModule <TController>(helper.RouteCollection, out areaName, out moduleName);
            ModularRenderPartial(helper, partialViewName, controllerName, areaName, moduleName, model, viewData);
        }