示例#1
0
        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"));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        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));
        }
示例#6
0
        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);
        }