예제 #1
0
        public ActionResult ToggleRole(string id, string role)
        {
            var user     = db.Users.Find(id);
            var isInRole = false;

            if (user != null)
            {
                var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(db));
                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));

                if (!roleManager.RoleExists(role))
                {
                    roleManager.Create(new IdentityRole(role));
                }

                if (userManager.IsInRole(id, role))
                {
                    userManager.RemoveFromRole(id, role);
                }
                else
                {
                    userManager.AddToRole(id, role);
                    isInRole = true;
                }

                db.SaveChanges();
            }



            return(Json(new { id = id, isInRole = isInRole, role = role }));
        }
예제 #2
0
        public ActionResult Edit(Donation donation)
        {
            if (ModelState.IsValid)
            {
                var sendEmail = false;


                var uploads = Server.MapPath("~/content/uploads");
                var image   = Request.Files["DonationImage"];

                if (image != null && image.ContentLength > 0)
                {
                    if (!Directory.Exists(uploads))
                    {
                        Directory.CreateDirectory(uploads);
                    }

                    image.SaveAs(uploads + "\\" + image.FileName);
                    donation.ImageUrl = "/content/uploads/" + image.FileName;
                }



                if (donation.DonationId == 0)
                {
                    db.Donations.Add(donation);
                    donation.DonatedById = User.Identity.GetUserId();
                    sendEmail            = true;
                }
                else
                {
                    db.Entry(donation).State = System.Data.Entity.EntityState.Modified;
                }


                db.SaveChanges();

                //donation.DonatedBy.PhoneNumber = donation.Phone;
                //db.SaveChanges();
                try
                {
                    if (sendEmail)
                    {
                        var message = new MailMessage();

                        message.To.Add(ConfigurationManager.AppSettings["donationsEmail"]);

                        var agencyRole = db.Roles.Where(x => x.Name == "Agency").SingleOrDefault();

                        if (agencyRole != null)
                        {
                            var userIds = agencyRole.Users.Select(x => x.UserId).ToList();

                            var users = db.Users.Where(x => userIds.Contains(x.Id) && x.EmailConfirmed).Select(x => x.Email).ToList();

                            foreach (var user in users)
                            {
                                message.Bcc.Add(new MailAddress(user));
                            }
                        }

                        var domainName = Request.Url.GetLeftPart(UriPartial.Authority);


                        message.Subject = "New Donation Available: " + donation.Title;
                        message.Body    = "A new donation has been added at " + domainName + "\r\n\r\nTitle: " + donation.Title + "\r\nDescription: " + donation.Description + "\r\nLocation: " + donation.Location;

                        using (var smtpClient = new SmtpClient())
                        {
                            try
                            {
                                // I've learnt my lesson with public repos. ;)
                                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["emailUsername"], ConfigurationManager.AppSettings["emailPassword"]);
                                smtpClient.Credentials = credentials;

                                smtpClient.Send(message);
                            }
                            catch { }
                        }
                    }
                }
                catch (Exception ex)
                { }

                return(RedirectToAction("Index"));
            }


            return(View(donation));
        }