Ejemplo n.º 1
0
        public static Organisation GetOrganisation()
        {
            var user = UserManager.FindById(HttpContext.Current.User.Identity.GetUserId());
            Organisation org = null;
            using (TasklyDbContext db = new TasklyDbContext())
            {
                org = db.Organisations.Find(user.OrganisationID.Value);
            }

            return org;
        }
Ejemplo n.º 2
0
 public static bool IsInRole(string user, string role)
 {
     using (TasklyDbContext db = new TasklyDbContext())
     {
         using (var store = new UserStore<TasklyUser>(db))
         {
             using (var manager = new UserManager<TasklyUser>(store))
             {
                 return manager.IsInRole(user, role);
             }
         }
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        ///  creates a demo survey for an organisation
        /// </summary>
        /// <param name="organisationId"></param>
        public static void CreateDemo(int organisationId)
        {
            using (TasklyDbContext db = new TasklyDbContext())
            {

                var survey = new Survey
                {
                    OrganisationID = organisationId,
                    Name = "Demo Survey",
                    EndUrl = "/admin/",
                    Active = true,
                    UID = TaskilyHelper.UniqueCode(),
                    WelcomeTitle = "Hello",
                    WelcomeMessage = "<p>Welcome to the taskily demo survey</p></p>This survey is designed to show you how taskily works</p>",
                    CompleteTitle = "Thanks",
                    CompleteMessage = "Thank you for completing this survey",
                    TaskCount = 5,

                    TasksHeading = "US States",
                    TasksSubHeading = "Tell us the 5 states you like most",

                    OrderHeading = "US States",
                    OrderSubHeading = "Which one do you like the most",
                    OrderText = "Now put the five states you picked in order, with your favorite one at the top",

                };

                db.Surveys.Add(survey);
                db.SaveChanges();

                // add the tasks
                var tasks = new List<SurveyTask>
                {
                    new SurveyTask { Name = "Alabama", Description = "Montgomery", Active = true, survey = survey},
                    new SurveyTask { Name = "Alaska", Description = "Juneau", Active = true, survey = survey},
                    new SurveyTask { Name = "Arizona", Description = "Phoenix", Active = true, survey = survey},
                    new SurveyTask { Name = "Arkansas", Description = "Little Rock", Active = true, survey = survey},
                    new SurveyTask { Name = "California", Description = "Sacramento", Active = true, survey = survey},
                    new SurveyTask { Name = "Colorado", Description = "Denver", Active = true, survey = survey},
                    new SurveyTask { Name = "Connecticut", Description = "Hartford", Active = true, survey = survey},
                    new SurveyTask { Name = "Delaware", Description = "Dover", Active = true, survey = survey},
                    new SurveyTask { Name = "Florida", Description = "Tallahassee", Active = true, survey = survey},
                    new SurveyTask { Name = "Georgia", Description = "Atlanta", Active = true, survey = survey},
                    new SurveyTask { Name = "Hawaii", Description = "Honolulu", Active = true, survey = survey},
                    new SurveyTask { Name = "Idaho", Description = "Boise", Active = true, survey = survey},
                    new SurveyTask { Name = "Illinois", Description = "Springfield", Active = true, survey = survey},
                    new SurveyTask { Name = "Indiana", Description = "Indianapolis", Active = true, survey = survey},
                    new SurveyTask { Name = "Iowa", Description = "Des Moines", Active = true, survey = survey},
                    new SurveyTask { Name = "Kansas", Description = "Topeka", Active = true, survey = survey},
                    new SurveyTask { Name = "Kentucky", Description = "Frankfort", Active = true, survey = survey},
                    new SurveyTask { Name = "Louisiana", Description = "Baton Rouge", Active = true, survey = survey},
                    new SurveyTask { Name = "Maine", Description = "Augusta", Active = true, survey = survey},
                    new SurveyTask { Name = "Maryland", Description = "Annapolis", Active = true, survey = survey},
                    new SurveyTask { Name = "Massachusetts", Description = "Boston", Active = true, survey = survey},
                    new SurveyTask { Name = "Michigan", Description = "Lansing", Active = true, survey = survey},
                    new SurveyTask { Name = "Minnesota", Description = "Saint Paul", Active = true, survey = survey},
                    new SurveyTask { Name = "Mississippi", Description = "Jackson", Active = true, survey = survey},
                    new SurveyTask { Name = "Missouri", Description = "Jefferson City", Active = true, survey = survey},
                    new SurveyTask { Name = "Montana", Description = "Helena", Active = true, survey = survey},
                    new SurveyTask { Name = "Nebraska", Description = "Lincoln", Active = true, survey = survey},
                    new SurveyTask { Name = "Nevada", Description = "Carson City", Active = true, survey = survey},
                    new SurveyTask { Name = "New Hampshire", Description = "Concord", Active = true, survey = survey},
                    new SurveyTask { Name = "New Jersey", Description = "Trenton", Active = true, survey = survey},
                    new SurveyTask { Name = "New Mexico", Description = "Santa Fe", Active = true, survey = survey},
                    new SurveyTask { Name = "New York", Description = "Albany", Active = true, survey = survey},
                    new SurveyTask { Name = "North Carolina", Description = "Raleigh", Active = true, survey = survey},
                    new SurveyTask { Name = "North Dakota", Description = "Bismarck", Active = true, survey = survey},
                    new SurveyTask { Name = "Ohio", Description = "Columbus", Active = true, survey = survey},
                    new SurveyTask { Name = "Oklahoma", Description = "Oklahoma City", Active = true, survey = survey},
                    new SurveyTask { Name = "Oregon", Description = "Salem", Active = true, survey = survey},
                    new SurveyTask { Name = "Pennsylvania", Description = "Harrisburg", Active = true, survey = survey},
                    new SurveyTask { Name = "Rhode Island", Description = "Providence", Active = true, survey = survey},
                    new SurveyTask { Name = "South Carolina", Description = "Columbia", Active = true, survey = survey},
                    new SurveyTask { Name = "South Dakota", Description = "Pierre", Active = true, survey = survey},
                    new SurveyTask { Name = "Tennessee", Description = "Nashville", Active = true, survey = survey},
                    new SurveyTask { Name = "Texas", Description = "Austin", Active = true, survey = survey},
                    new SurveyTask { Name = "Utah", Description = "Salt Lake City", Active = true, survey = survey},
                    new SurveyTask { Name = "Vermont", Description = "Montpelier", Active = true, survey = survey},
                    new SurveyTask { Name = "Virginia", Description = "Richmond", Active = true, survey = survey},
                    new SurveyTask { Name = "Washington", Description = "Olympia", Active = true, survey = survey},
                    new SurveyTask { Name = "West Virginia", Description = "Charleston", Active = true, survey = survey},
                    new SurveyTask { Name = "Wisconsin", Description = "Madison", Active = true, survey = survey},
                    new SurveyTask { Name = "Wyoming", Description = "Cheyenne", Active = true, survey = survey}
                };
                tasks.ForEach(t => db.Tasks.Add(t));

                var Questions = new List<Question> {
                    new Question { Name = "Age", Text = "How old are you?", Type = QuestionType.MultipleChoice, Data = "0-18\n19-30\n31-45\n46-75\n75+", Survey = survey},
                    new Question { Name = "Feedback", Text = "Any other feedback?", Type = QuestionType.FreeText, Survey = survey }
                };
                Questions.ForEach(q => db.Questions.Add(q));

                db.SaveChanges();
            }
        }
Ejemplo n.º 4
0
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new TasklyUser() { UserName = model.Email, Email = model.Email };
                IdentityResult result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);
                    if (result.Succeeded)
                    {
                        await SignInAsync(user, isPersistent: false);

                        //
                        // create the organisation at sign-up
                        //
                        var organisation = new Organisation { Name = model.Organisation, AccountType = OrgAccountType.free };
                        var db = new TasklyDbContext();
                        db.Organisations.Add(organisation);                       
                        db.SaveChanges();
                        db.Dispose();

                        user.UserDisplayName = model.UserDisplayName; 
                        user.OrganisationID = organisation.ID;
                        UserManager.Update(user);

                        DemoSurvey.CreateDemo(organisation.ID);
                        
                        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // SendEmail(user.Email, callbackUrl, "Confirm your account", "Please confirm your account by clicking this link");
                        
                        return RedirectToLocal(returnUrl);
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
Ejemplo n.º 5
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new TasklyUser() { UserName = model.Email, Email = model.Email };
                IdentityResult result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    //
                    // create the organisation at sign-up
                    //
                    var organisation = new Organisation { Name = model.Organisation, AccountType = OrgAccountType.free };
                    var db = new TasklyDbContext();
                    db.Organisations.Add(organisation);
                    db.SaveChanges();
                    db.Dispose();

                    user.OrganisationID = organisation.ID;
                    user.UserDisplayName = model.UserDisplayName; 
                    UserManager.Update(user);

                    DemoSurvey.CreateDemo(organisation.ID);

                    try {
                        var emailHelper = new Helpers.TaskilyEmailHelper();
                        emailHelper.SendWelcomeEmail(model.Email);
                    }
                    catch(Exception ex)
                    {
                        Trace.TraceError("Error Sending Welcome Email: {0}", ex.ToString());
                    }

                    await SignInAsync(user, isPersistent: false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return RedirectToAction("Index", "Admin");
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
Ejemplo n.º 6
0
        // private TasklyDbContext db = new TasklyDbContext();
        //
        // GET: /API/Stats/GetSummary/id
        //
        public SurveySummary GetSummary(int id)
        {
            SurveySummary data = new SurveySummary();
            int totalCount = 0;
            int totalWeight = 0;
            int responseCount = 0;
            int maxWeight = 0;

            using (TasklyDbContext db = new TasklyDbContext())
            {
                var survey = db.Surveys.Find(id);
                maxWeight = survey.TaskCount;

                if (!AdminSecurity.IsValidOrganisation(survey.OrganisationID))
                {
                    // public results (for non-
                    if ( survey.organisation.AccountType == OrgAccountType.free || !survey.PublicResults )
                        return null;
                }

                var responses = db.Responses
                    .Include(r => r.Picked)
                    .Where(r => r.SurveyID == id).ToList();

                foreach (var response in responses)
                {
                    foreach (var task in response.Picked)
                    {
                        if (!data.Tasks.Any(x => x.ID == task.SurveyTaskID))
                        {
                            data.Tasks.Add(new ResponseData
                                {
                                    ID = task.SurveyTaskID,
                                    Name = task.Task.Name,
                                    Count = 1,
                                    Weight = task.Weight
                                });
                        }
                        else
                        {
                            var existingTask = data.Tasks.Where(x => x.ID == task.SurveyTaskID).Single();
                            if (existingTask != null)
                            {
                                data.Tasks.Remove(existingTask);
                                existingTask.Count++;
                                existingTask.Weight += task.Weight;
                                data.Tasks.Add(existingTask);
                            }
                        }

                        totalCount++;
                        totalWeight += task.Weight;
                    }
                }

                responseCount = responses.Count();
            }

            foreach(var item in data.Tasks)
            {

                // item.CountPercent = ((double)item.Count / totalCount);
                item.CountPercent = ((double)item.Count / responseCount);
                item.WeightPercent = ((double)item.Weight / totalWeight);
                // item.WeightPercent = ((double)item.Weight / (maxWeight * responseCount));
                item.Importance = ((double)item.Weight / item.Count);
            }

            return data;
        }