public ActionResult UploadFileToTicket([Bind(Include = "TicketId,FileName")] TicketAttachment ticketAttachments, string AttachmentDescription, HttpPostedFileBase file)
        {
            if (file == null)
            {
                TempData["Error"] = "You must Supply a vaild File";
                return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachments.TicketId }));
            }
            if (ModelState.IsValid)
            {
                if (FileUploadValidator.IsWebFriendlyImage(file) || FileUploadValidator.IsWebFriendlyFile(file))
                {
                    ticketAttachments.Created     = DateTime.Now;
                    ticketAttachments.UserId      = User.Identity.GetUserId();
                    ticketAttachments.Description = AttachmentDescription;

                    var fileName     = FileStamp.MakeUnique(file.FileName);
                    var serverFolder = WebConfigurationManager.AppSettings["DefaultAttachmentFolder"];
                    file.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                    ticketAttachments.FilePath = $"{serverFolder}{fileName}";
                    ticketAttachments.FileName = fileName;
                    db.TicketAttachments.Add(ticketAttachments);
                    db.SaveChanges();
                    notificationHelper.TicketNewAttachmentAdded(ticketAttachments);
                    return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachments.TicketId }));
                }
            }

            //ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterId", ticketAttahment.TicketId);
            //ViewBag.UserId = new SelectList(db.Users, "Id", "FirstName", ticketAttahment.UserId);
            TempData["Error"] = "Model Invalid";
            return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachments.TicketId }));
        }
        public ActionResult Create([Bind(Include = "TicketId,FileName,Description")] TicketAttachment ticketAttachment, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                ticketAttachment.Created = DateTime.Now;
                ticketAttachment.UserId  = User.Identity.GetUserId();

                if (file == null)
                {
                    TempData["Error"] = "You must supply a file.";
                    return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachment.TicketId }));
                }

                if (FileUploadValidator.IsWebFriendlyImage(file) || FileUploadValidator.IsWebFriendlyFile(file))
                {
                    var fileName = FileStamp.MakeUnique(file.FileName);

                    var serverFolder = WebConfigurationManager.AppSettings["DefaultServerFolder"];
                    file.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                    ticketAttachment.FilePath = $"{serverFolder}{fileName}";
                }

                db.TicketAttachments.Add(ticketAttachment);
                db.SaveChanges();
                var ticket = db.Tickets.Find(ticketAttachment.TicketId);
                if (ticket.DeveloperId != User.Identity.GetUserId())
                {
                    ticketManager.AttachmentNotifications(ticket);
                }
                return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachment.TicketId }));
            }

            TempData["Error"] = "The model was invalid.";
            return(RedirectToAction("Dashboard", "Tickets", new { id = ticketAttachment.TicketId }));
        }
Пример #3
0
        public async Task <ActionResult> Register(ExtendedRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, AvatarPath = "/Avatars/purpleuser.png"
                };

                if (model.Avatar != null)
                {
                    if (ImageUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName     = FileStamp.MakeUnique(model.Avatar.FileName);
                        var serverFolder = WebConfigurationManager.AppSettings["DefaultServerFolder"];
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                        user.AvatarPath = $"{serverFolder}{fileName}";
                    }
                }
                var result = await UserManager.CreateAsync(user, model.Password);

                if (user.Roles.FirstOrDefault() == null)
                {
                    roleHelper.AddUserToRole(user.Id, "Unassigned");
                }
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, protocol: Request.Url.Scheme);
                    try
                    {
                        var from  = "Bug Tracker<*****@*****.**>";
                        var email = new MailMessage(from, model.Email)
                        {
                            Subject    = "Confirm Your Acount",
                            Body       = "Please confirm your email by clicking <a href=\"" + callbackUrl + "\">here</a> ",
                            IsBodyHtml = true
                        };
                        var svc = new EmailService();
                        await svc.SendAsync(email);

                        //return View("EmailConfirmed");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        await Task.FromResult(0);
                    }
                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Пример #4
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModelExtended model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "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 ApplicationUser
                {
                    UserName   = model.Email,
                    Email      = model.Email,
                    FirstName  = model.FirstName,
                    LastName   = model.LastName,
                    AvatarPath = WebConfigurationManager.AppSettings["DefaultAvatarPath"]
                };
                if (model.Avatar != null)
                {
                    if (FileUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName     = FileStamp.MakeUnique(model.Avatar.FileName);
                        var AvatarFolder = WebConfigurationManager.AppSettings["DefaultAvatarFolder"];
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath(AvatarFolder), fileName));
                        user.AvatarPath = $"{AvatarFolder}{fileName}";
                    }
                }
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
Пример #5
0
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationVM model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName    = model.Email,
                    Email       = model.Email,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    HouseholdId = model.HouseholdId
                };

                if (model.Avatar != null)
                {
                    if (FileUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName = FileStamp.MakeUnique(model.Avatar.FileName);

                        var serverFolder = WebConfigurationManager.AppSettings["DefaultServerFolder"];
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath("~" + serverFolder), fileName));
                        user.AvatarPath = $"{serverFolder}/{fileName}";
                    }
                }

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    rolesHelper.AddUserToRole(user.Id, "Member");
                    InvitationHelper.MarkAsInvalid(model.InvitationId);
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://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("Dashboard", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form

            return(View(model));
        }
Пример #6
0
 public ActionResult ChangeAvatar(HttpPostedFileBase file)
 {
     if (file != null)
     {
         if (ImageUploadValidator.IsWebFriendlyImage(file))
         {
             var user         = db.Users.Find(User.Identity.GetUserId());
             var fileName     = FileStamp.MakeUnique(file.FileName);
             var serverFolder = WebConfigurationManager.AppSettings["DefaultServerFolder"];
             file.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
             user.AvatarPath = $"{serverFolder}{fileName}";
             db.SaveChanges();
         }
     }
     return(RedirectToAction("Index", "Home"));
 }
Пример #7
0
        public async Task <ActionResult> Register(ExtendedRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName   = model.Email,
                    Email      = model.Email,
                    FirstName  = model.FirstName,
                    LastName   = model.LastName,
                    AvatarPath = "/Images/default_avatar.png"
                };
                if (model.Avatar != null)
                {
                    if (FileUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName = FileStamp.MakeUnique(model.Avatar.FileName);
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath("~/Avatars"), fileName));
                        user.AvatarPath = "/Avatars/" + fileName;
                    }
                }



                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://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", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public ActionResult ManageUser(ManageUserVM userVM, string roleName, string projects)
        {
            List <Project> oldProjects = projectHelper.ListUserProjects(userVM.UserId).ToList();
            var            oldUser     = db.Users.AsNoTracking().FirstOrDefault(u => u.Id == userVM.UserId);

            var user = db.Users.Find(userVM.UserId);

            user.Email       = userVM.Email;
            user.UserName    = userVM.Email;
            user.FirstName   = userVM.FirstName;
            user.LastName    = userVM.LastName;
            user.PhoneNumber = userVM.PhoneNumber;
            user.AvatarPath  = userVM.AvatarPath;

            if (FileUploadValidator.IsWebFriendlyImage(userVM.Avatar))
            {
                var fileName     = FileStamp.MakeUnique(userVM.Avatar.FileName);
                var serverFolder = WebConfigurationManager.AppSettings["DefaultAvatarFolder"];
                userVM.Avatar.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                user.AvatarPath = $"{serverFolder}{fileName}";
            }

            db.SaveChanges();
            projectHelper.updateUserProjects(userVM.UserId, userVM.ProjectIds);



            if (roleName != null)
            {
                foreach (var role in roleHelper.ListUserRoles(user.Id))
                {
                    roleHelper.RemoveUserFromRole(user.Id, role);
                }
                if (!string.IsNullOrEmpty(roleName))
                {
                    roleHelper.AddUserToRole(user.Id, roleName);
                }
            }
            var newUser = db.Users.AsNoTracking().FirstOrDefault(u => u.Id == userVM.UserId);

            historyHelper.CheckUserEdits(oldUser, newUser, oldProjects);
            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Create([Bind(Include = "TicketId,FileName")] TicketAttachment ticketAttachment, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                ticketAttachment.Ticket = db.Tickets.Find(ticketAttachment.TicketId);
                var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticketAttachment.TicketId);
                db.Entry(ticketAttachment.Ticket).State = EntityState.Modified;
                if (ticketAttachment.FileName == null)
                {
                    TempData["Error"] = "You must supply a File Name of at least three characters";
                    return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
                }
                ticketAttachment.Created = DateTime.Now;
                ticketAttachment.UserId  = User.Identity.GetUserId();
                if (file == null)
                {
                    TempData["Error"] = "You must supply a file";
                    return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
                }

                if (FileUploadValidator.IsWebFriendlyFile(file) || ImageUploadValidator.IsWebFriendlyImage(file))
                {
                    var fileName     = FileStamp.MakeUnique(file.FileName);
                    var serverFolder = WebConfigurationManager.AppSettings["DefaultServerFolder"];
                    file.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                    ticketAttachment.FilePath = $"{serverFolder}{fileName}";
                    db.TicketAttachments.Add(ticketAttachment);
                    db.SaveChanges();
                    var newTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticketAttachment.TicketId);
                    await ticketHelper.ManageTicketNotifications(oldTicket, newTicket, "no");
                }

                return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
            }
            TempData["Error"] = "The Model State was invalid. I apologize";
            return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
        }
        public ActionResult Create([Bind(Include = "TicketId,FileName,Description")] TicketAttachment ticketAttachment, HttpPostedFileBase file)
        {
            if (file == null)
            {
                TempData["Error"] = "You must submit a file.";
                return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
            }

            if (ModelState.IsValid)
            {
                //Pass it through a file validator
                if (FileUploadValidator.IsWebFriendlyFile(file))
                {
                    ticketAttachment.Created = DateTime.Now;
                    ticketAttachment.UserId  = User.Identity.GetUserId();


                    var fileName = FileStamp.MakeUnique(file.FileName);
                    //Assign the filePath property and save the physical file
                    var serverFolder = WebConfigurationManager.AppSettings["DefaultAttachmentFolder"];
                    file.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                    ticketAttachment.FilePath = $"{serverFolder}{fileName}";

                    db.TicketAttachments.Add(ticketAttachment);
                    db.SaveChanges();
                }

                return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.TicketId }));
            }
            TempData["Error"] = "The model is invalid.";
            return(RedirectToAction("Details", "Tickets", new { id = ticketAttachment.Ticket.Id }));

            //ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterId", ticketAttachment.TicketId);
            //ViewBag.UserId = new SelectList(db.Users, "Id", "FirstName", ticketAttachment.UserId);
            //return View(ticketAttachment);
        }
Пример #11
0
        public async Task <ActionResult> CreateNewUser(CreateNewUserViewModel model, List <int> AllProjects, string RoleName)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName    = model.Email,
                    Email       = model.Email,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    AvatarPath  = WebConfigurationManager.AppSettings["DefaultAvatarPath"],
                    PhoneNumber = model.PhoneNumber
                };
                if (model.Avatar != null)
                {
                    if (FileUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName     = FileStamp.MakeUnique(model.Avatar.FileName);
                        var serverFolder = WebConfigurationManager.AppSettings["DefaultAvatarFolder"];
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath(serverFolder), fileName));
                        user.AvatarPath = $"{serverFolder}{fileName}";
                    }
                }
                var result = await UserManager.CreateAsync(user, Membership.GeneratePassword(12, 1));

                if (result.Succeeded)
                {
                    roleHelper.AddUserToRole(user.Id, RoleName);

                    foreach (var projectId in AllProjects)
                    {
                        projectHelper.AddUserToProject(user.Id, projectId);
                    }


                    // For more information on how to enable account confirmation and password reset please visit https://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);

                    try
                    {
                        var from  = "BugTracker Admin<*****@*****.**>";
                        var email = new MailMessage(from, model.Email)
                        {
                            Subject    = "Confirm Your Account",
                            Body       = "Please confirm your account by Clicking here <a href=\"" + callbackUrl + "\">here</a> ",
                            IsBodyHtml = true
                        };
                        var svc = new EmailService();
                        await svc.SendAsync(email);

                        //return View(new EmailModel());
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        await Task.FromResult(0);
                    }

                    //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Login", "Account"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            ViewBag.AllProjects = new MultiSelectList(db.Projects.ToList(), "Id", "Name");
            ViewBag.RoleName    = new SelectList(db.Roles, "Name", "Name", "Default");
            return(View(model));
        }
Пример #12
0
        public async Task <ActionResult> Register(ExtendedRegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName   = model.Email,
                    Email      = model.Email,
                    FirstName  = model.FirstName,
                    LastName   = model.LastName,
                    AvatarPath = WebConfigurationManager.AppSettings["DefaultAvatarPath"]
                };
                if (model.Avatar != null)
                {
                    if (FileUploadValidator.IsWebFriendlyImage(model.Avatar))
                    {
                        var fileName     = FileStamp.MakeUnique(model.Avatar.FileName);
                        var AvatarFolder = WebConfigurationManager.AppSettings["DefaultAvatarFolder"];
                        model.Avatar.SaveAs(Path.Combine(Server.MapPath(AvatarFolder), fileName));
                        user.AvatarPath = $"{AvatarFolder}{fileName}";
                    }
                }

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    UserManager.AddToRole(user.Id, "Default");

                    //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                    // For more information on how to enable account confirmation and password reset please visit https://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);

                    try
                    {
                        var from  = "BugTracker Admin<*****@*****.**>";
                        var email = new MailMessage(from, model.Email)
                        {
                            Subject    = "Confirm Your Account",
                            Body       = "Please confirm your account by Clicking here <a href=\"" + callbackUrl + "\">here</a> ",
                            IsBodyHtml = true
                        };
                        var svc = new EmailService();
                        await svc.SendAsync(email);

                        //return View(new EmailModel());
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        await Task.FromResult(0);
                    }

                    //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Login", "Account"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(RedirectToAction("Login", "Account"));
        }