public static bool SendPinInPost(this RegisterController controller, UserOrganisation userOrg, string pin, DateTime sendDate, bool test = false) { var returnUrl = controller.Url.Action("ActivateService", "Register", null, "https"); var imagePath = new System.UriBuilder(controller.Request.Url.AbsoluteUri) { Path = controller.Url.Content(@"~/Content/img/") }.Uri.ToString(); return(GovNotifyAPI.SendPinInPost(imagePath, returnUrl, userOrg.User.Fullname, userOrg.User.JobTitle, userOrg.Organisation.OrganisationName, userOrg.Address.GetList(), pin, sendDate, sendDate.AddDays(Properties.Settings.Default.PinInPostExpiryDays), test)); }
public ActionResult CheckData(ReturnViewModel model) { //Ensure user has completed the registration process User currentUser; var checkResult = CheckUserRegisteredOk(out currentUser); if (checkResult != null) { return(checkResult); } if (model.SectorType == SectorTypes.Public) { ModelState.Remove("FirstName"); ModelState.Remove("LastName"); ModelState.Remove("JobTitle"); } if (!ModelState.IsValid) { this.CleanModelErrors <ReturnViewModel>(); return(View(model)); } var oldReturn = DataRepository.GetAll <Return>().FirstOrDefault(r => r.ReturnId == model.ReturnId); var newReturn = new Return() { AccountingDate = model.AccountingDate, CompanyLinkToGPGInfo = model.CompanyLinkToGPGInfo, DiffMeanBonusPercent = model.DiffMeanBonusPercent.Value, DiffMeanHourlyPayPercent = model.DiffMeanHourlyPayPercent.Value, DiffMedianBonusPercent = model.DiffMedianBonusPercent.Value, DiffMedianHourlyPercent = model.DiffMedianBonusPercent.Value, FemaleLowerPayBand = model.FemaleLowerPayBand.Value, FemaleMedianBonusPayPercent = model.FemaleMedianBonusPayPercent.Value, FemaleMiddlePayBand = model.FemaleMiddlePayBand.Value, FemaleUpperPayBand = model.FemaleUpperPayBand.Value, FemaleUpperQuartilePayBand = model.FemaleUpperQuartilePayBand.Value, FirstName = model.FirstName, LastName = model.LastName, JobTitle = model.JobTitle, MaleLowerPayBand = model.MaleLowerPayBand.Value, MaleMedianBonusPayPercent = model.MaleMedianBonusPayPercent.Value, MaleUpperQuartilePayBand = model.MaleUpperQuartilePayBand.Value, MaleMiddlePayBand = model.MaleMiddlePayBand.Value, MaleUpperPayBand = model.MaleUpperPayBand.Value, Status = ReturnStatuses.Draft, OrganisationId = model.OrganisationId }; //Retire the old one if (oldReturn != null) { if (oldReturn.Equals(newReturn)) { newReturn = oldReturn; } else { oldReturn.SetStatus(ReturnStatuses.Retired, currentUser.UserId); } } //add the new one if (oldReturn == null || oldReturn.Status == ReturnStatuses.Retired) { DataRepository.Insert(newReturn); } using (var scope = new TransactionScope()) { DataRepository.SaveChanges(); newReturn.SetStatus(ReturnStatuses.Submitted, currentUser.UserId); DataRepository.SaveChanges(); scope.Complete(); } //Alert on submit if (oldReturn == null && MvcApplication.EnableSubmitAlerts && !currentUser.EmailAddress.StartsWithI(MvcApplication.TestPrefix)) { GovNotifyAPI.SendGeoMessage("GPG Data Submission Notification", $"GPG data was submitted for first time by '{newReturn.Organisation.OrganisationName}' on {newReturn.StatusDate.ToShortDateString()}\n\n See {Url.Action("EmployerDetails","Viewing",new {id=newReturn.Organisation.GetEncryptedId()}," https ")}", test: currentUser.EmailAddress.StartsWithI(MvcApplication.TestPrefix)); } return(RedirectToAction("SubmissionComplete")); }
public static bool SendPasswordReset(this RegisterController controller, string emailAddress, string resetCode, bool test = false) { var resetUrl = controller.Url.Action("NewPassword", "Register", new { code = resetCode }, "https"); return(GovNotifyAPI.SendPasswordReset(resetUrl, emailAddress, resetCode, test)); }
public static bool SendVerifyEmail(this RegisterController controller, string emailAddress, string verifyCode, bool test = false) { var verifyUrl = controller.Url.Action("VerifyEmail", "Register", new { code = verifyCode }, "https"); return(GovNotifyAPI.SendVerifyEmail(verifyUrl, emailAddress, verifyCode, test)); }
public async Task <IActionResult> Index(ProjectViewModel model, string command) { try { if (command == "Add") { model.TeamMembers.Add(new ProjectViewModel.TeamMember()); } if (command == "Clear") { for (int i = model.TeamMembers.Count - 1; i >= 0; i--) { var member = model.TeamMembers[i]; if (string.IsNullOrWhiteSpace(member.Name) && string.IsNullOrWhiteSpace(member.Email) && model.TeamMembers.Count > 1) { model.TeamMembers.RemoveAt(i); } } } else if (command == "Create") { var pers = new Dictionary <string, dynamic> { { "address_line_1", "Stephen McCabe" }, { "address_line_2", "Flat 24 Lowlands" }, { "address_line_3", "2-8 Eton Avenue" }, { "address_line_4", "Belsize Park" }, { "address_line_5", "London" }, { "postcode", "NW3 3EJ" }, { "company", "Phantom Consulting Ltd" }, { "pin", "ASDFGH" }, { "returnurl", "https://google.com" }, { "expires", "1 November 2017" } }; var client = new NotificationClient("betakey-58538018-48c7-4dcc-b33e-58492646d371-fdd3379d-f099-4cf6-be71-be830330bbfa"); var result = client.SendLetter("4cc0b2e0-d8c2-43ab-a61a-9fba6575514e", pers, "GpgAlphaTest"); var notification = client.GetNotificationById(result.id); int c = 0; foreach (var member in model.TeamMembers) { if (string.IsNullOrWhiteSpace(member.Name) && string.IsNullOrWhiteSpace(member.Email)) { continue; } c++; } if (c == 0) { ModelState.AddModelError("", "You must enter at least one team member member"); } if (!ModelState.IsValid) { return(View(model)); } //Check project name doesnt already exist var projects = VSTSManager.GetProjects(); var project = projects.FirstOrDefault(p => p.Name.ToLower() == model.TeamProjectName.ToLower()); if (project != null && !model.TeamProjectName.StartsWithI("TestProject")) { ModelState.AddModelError(nameof(model.TeamProjectName), "A project with this name already exists"); return(View(model)); } //Create Project (if it doesnt already exist) string projectId = project == null ? null : project.Id; if (project == null) { projectId = VSTSManager.CreateProject(model.TeamProjectName); } //Get the teams var teams = VSTSManager.GetTeams(projectId); var team = teams[0]; //Get the members var members = VSTSManager.GetMembers(projectId, team.Id); //Get the Repo var repos = VSTSManager.GetRepos(projectId); var repo = repos[0]; //copy the sample repo if (string.IsNullOrWhiteSpace(repo.DefaultBranch)) { var serviceEndpointId = VSTSManager.CreateEndpoint(projectId, AppSettings.SourceRepoUrl, "", AppSettings.VSTSPersonalAccessToken); VSTSManager.ImportRepo(projectId, repo.Id, AppSettings.SourceRepoUrl, serviceEndpointId); } //Create users //var vstsManager = new VstsManager.VstsManager(VSTSManager.CollectionUrl, AppSettings.VSTSPersonalAccessToken); //foreach (var member in model.TeamMembers) //{ // vstsManager.AddUserToAccount(VSTSManager.Account,member.Email); //} //Send the Email var notify = new GovNotifyAPI(); var projectUrl = $"https://{VSTSManager.Account}.visualstudio.com/{WebUtility.UrlEncode(project.Name)}"; foreach (var member in model.TeamMembers) { var personalisation = new Dictionary <string, dynamic> { { "name", member.Name }, { "email", member.Email }, { "project", model.TeamProjectName }, { "projecturl", projectUrl }, { "giturl", repo.RemoteUrl }, { "appurl", "https://HelloWorld.com" } }; notify.SendEmail("*****@*****.**", AppSettings.WelcomeTemplateId, personalisation); //var html = Properties.Resources.Welcome; //html = html.ReplaceI("((name))", member.Name).ReplaceI("((email))", member.Email).ReplaceI("((project))", model.TeamProjectName).ReplaceI("((projecturl))", projectUrl).ReplaceI("((appurl))", "https://google.com").ReplaceI("((giturl))", repo.RemoteUrl); //Email.QuickSend("Welcome to the Platform Thing", "*****@*****.**", "The Platform Thing", null, $"{member.Name}<{member.Email}>", html, AppSettings.SmtpServer, AppSettings.SmtpUsername, AppSettings.SmtpPassword); } return(View("CustomError", new CustomErrorViewModel { Title = "Complete", Subtitle = "Project successfully created", Description = "Your project was successfully created and welcome emails sent to the team members.", CallToAction = "Create another project...", ActionText = "Continue", ActionUrl = Request.GetDisplayUrl() })); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } return(View(model)); }
public static T GetController <T>(long userId = 0, RouteData routeData = null, params object[] dbObjects) where T : Controller { var builder = BuildContainerIoC(dbObjects); //Initialise static classes with IoC container GovNotifyAPI.Initialise(builder); //Mock UserId as claim var claims = new List <Claim>(); if (userId > 0) { claims.Add(new Claim(Constants.ClaimTypes.Subject, userId.ToString())); } var mockPrincipal = new Mock <ClaimsPrincipal>(); mockPrincipal.Setup(m => m.Claims).Returns(claims); mockPrincipal.Setup(m => m.Identity.IsAuthenticated).Returns(userId > 0); if (userId > 0) { mockPrincipal.Setup(m => m.Identity.Name).Returns(userId.ToString()); } //Mock HttpRequest var requestMock = new Mock <HttpRequestBase>(); requestMock.SetupGet(x => x.ApplicationPath).Returns("/"); requestMock.SetupGet(x => x.Url).Returns(new Uri(Url, UriKind.Absolute)); requestMock.SetupGet(x => x.ServerVariables).Returns(new NameValueCollection()); //Done:Added the queryString Dictionary property for mock object var queryString = new NameValueCollection() { { "code", "abcdefg" } }; //queryString.Add("code", "abcdefg"); requestMock.SetupGet(x => x.QueryString).Returns(queryString); //Mock HttpResponse var responseMock = new Mock <HttpResponseBase>(); responseMock.Setup(x => x.ApplyAppPathModifier(It.IsAny <string>())).Returns((string url) => url); //Mock session var sessionMock = new MockHttpSession(); //Mock HttpContext var contextMock = new Mock <HttpContextBase>(); contextMock.Setup(ctx => ctx.User).Returns(mockPrincipal.Object); contextMock.SetupGet(ctx => ctx.Request).Returns(requestMock.Object); contextMock.SetupGet(ctx => ctx.Response).Returns(responseMock.Object); contextMock.Setup(ctx => ctx.Session).Returns(sessionMock); MvcApplication.FileRepository = builder.Resolve <IFileRepository>(); //Mock the httpcontext to the controllercontext var controllerContextMock = new Mock <ControllerContext>(); controllerContextMock.Setup(con => con.HttpContext).Returns(contextMock.Object); controllerContextMock.Setup(con => con.RouteData).Returns(routeData); if (routeData == null) { routeData = new RouteData(); } T controller = (T)Activator.CreateInstance(typeof(T), builder); var routes = new RouteCollection(); RouteConfig.RegisterRoutes(routes); controller.ControllerContext = controllerContextMock.Object; controller.Url = new UrlHelper(new RequestContext(contextMock.Object, routeData), routes); return(controller); }