Пример #1
0
        public ActionResult Config(SmsMasterModel model)
        {
            if (ModelState.IsValid)
            {
                var db          = new SmsContext();
                var companyName = db.SMS_MASTER.Where(u => u.NAME == "COMPANY_NAME" && u.ACTIVE == "A").FirstOrDefault();
                if (companyName == null)
                {
                    companyName           = db.SMS_MASTER.Create();
                    companyName.NAME      = "COMPANY_NAME";
                    companyName.VALUE     = model.CompanyName;
                    companyName.UPDATE_AT = DateTime.Now;
                    companyName.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    companyName.CREATE_AT = DateTime.Now;
                    companyName.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    companyName.ACTIVE    = "A";
                    db.SMS_MASTER.Add(companyName);
                    db.SaveChanges();
                }
                else
                {
                    companyName.VALUE     = model.CompanyName;
                    companyName.UPDATE_AT = DateTime.Now;
                    companyName.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var address = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "ADDRESS").FirstOrDefault();
                if (address == null)
                {
                    address           = db.SMS_MASTER.Create();
                    address.NAME      = "ADDRESS";
                    address.VALUE     = model.Address;
                    address.UPDATE_AT = DateTime.Now;
                    address.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    address.CREATE_AT = DateTime.Now;
                    address.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    address.ACTIVE    = "A";
                    db.SMS_MASTER.Add(address);
                    db.SaveChanges();
                }
                else
                {
                    address.VALUE     = model.Address;
                    address.UPDATE_AT = DateTime.Now;
                    address.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var phoneNumber = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "PHONE_NUMBER").FirstOrDefault();
                if (phoneNumber == null)
                {
                    phoneNumber           = db.SMS_MASTER.Create();
                    phoneNumber.NAME      = "PHONE_NUMBER";
                    phoneNumber.VALUE     = model.PhoneNumber;
                    phoneNumber.UPDATE_AT = DateTime.Now;
                    phoneNumber.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    phoneNumber.CREATE_AT = DateTime.Now;
                    phoneNumber.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    phoneNumber.ACTIVE    = "A";
                    db.SMS_MASTER.Add(phoneNumber);
                    db.SaveChanges();
                }
                else
                {
                    phoneNumber.VALUE     = model.PhoneNumber;
                    phoneNumber.UPDATE_AT = DateTime.Now;
                    phoneNumber.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var faxNumber = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "FAX_NUMBER").FirstOrDefault();
                if (faxNumber == null)
                {
                    faxNumber           = db.SMS_MASTER.Create();
                    faxNumber.NAME      = "FAX_NUMBER";
                    faxNumber.VALUE     = model.FaxNumber;
                    faxNumber.UPDATE_AT = DateTime.Now;
                    faxNumber.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    faxNumber.CREATE_AT = DateTime.Now;
                    faxNumber.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    faxNumber.ACTIVE    = "A";
                    db.SMS_MASTER.Add(faxNumber);
                    db.SaveChanges();
                }
                else
                {
                    faxNumber.VALUE     = model.FaxNumber;
                    faxNumber.UPDATE_AT = DateTime.Now;
                    faxNumber.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var advertisementHeader = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "ADVERTISEMENT_HEADER").FirstOrDefault();
                if (advertisementHeader == null)
                {
                    advertisementHeader           = db.SMS_MASTER.Create();
                    advertisementHeader.NAME      = "ADVERTISEMENT_HEADER";
                    advertisementHeader.VALUE     = model.AdvertisementHeader;
                    advertisementHeader.CREATE_AT = DateTime.Now;
                    advertisementHeader.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    advertisementHeader.UPDATE_AT = DateTime.Now;
                    advertisementHeader.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    advertisementHeader.ACTIVE    = "A";
                    db.SMS_MASTER.Add(advertisementHeader);
                    db.SaveChanges();
                }
                else
                {
                    advertisementHeader.VALUE     = model.AdvertisementHeader;
                    advertisementHeader.UPDATE_AT = DateTime.Now;
                    advertisementHeader.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var advertisementFooter = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "ADVERTISEMENT_FOOTER").FirstOrDefault();
                if (advertisementFooter == null)
                {
                    advertisementFooter           = db.SMS_MASTER.Create();
                    advertisementFooter.NAME      = "ADVERTISEMENT_FOOTER";
                    advertisementFooter.VALUE     = model.AdvertisementFooter;
                    advertisementFooter.CREATE_AT = DateTime.Now;
                    advertisementFooter.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    advertisementFooter.UPDATE_AT = DateTime.Now;
                    advertisementFooter.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    advertisementFooter.ACTIVE    = "A";
                    db.SMS_MASTER.Add(advertisementFooter);
                    db.SaveChanges();
                }
                else
                {
                    advertisementFooter.VALUE     = model.AdvertisementFooter;
                    advertisementFooter.UPDATE_AT = DateTime.Now;
                    advertisementFooter.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }


                var email = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL").FirstOrDefault();
                if (email == null)
                {
                    email           = db.SMS_MASTER.Create();
                    email.NAME      = "EMAIL";
                    email.VALUE     = model.Email;
                    email.CREATE_AT = DateTime.Now;
                    email.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    email.UPDATE_AT = DateTime.Now;
                    email.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    email.ACTIVE    = "A";
                    db.SMS_MASTER.Add(email);
                    db.SaveChanges();
                }
                else
                {
                    email.VALUE     = model.Email;
                    email.UPDATE_AT = DateTime.Now;
                    email.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }

                var emailUser = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL_USR").FirstOrDefault();
                if (emailUser == null)
                {
                    emailUser           = db.SMS_MASTER.Create();
                    emailUser.NAME      = "EMAIL_USR";
                    emailUser.VALUE     = model.EmailUserName;
                    emailUser.CREATE_AT = DateTime.Now;
                    emailUser.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    emailUser.UPDATE_AT = DateTime.Now;
                    emailUser.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    emailUser.ACTIVE    = "A";
                    db.SMS_MASTER.Add(emailUser);
                    db.SaveChanges();
                }
                else
                {
                    emailUser.VALUE     = model.EmailUserName;
                    emailUser.UPDATE_AT = DateTime.Now;
                    emailUser.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }

                var emailPass = db.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL_PASS").FirstOrDefault();
                if (emailPass == null)
                {
                    emailPass           = db.SMS_MASTER.Create();
                    emailPass.NAME      = "EMAIL_PASS";
                    emailPass.VALUE     = EmailManager.Encrypt(model.EmailPassword, SystemConstant.SALT);
                    emailPass.CREATE_AT = DateTime.Now;
                    emailPass.CREATE_BY = Convert.ToInt32(Session["UserId"]);
                    emailPass.UPDATE_AT = DateTime.Now;
                    emailPass.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    emailPass.ACTIVE    = "A";
                    db.SMS_MASTER.Add(emailPass);
                    db.SaveChanges();
                }
                else
                {
                    emailPass.VALUE     = EmailManager.Encrypt(model.EmailPassword, SystemConstant.SALT);
                    emailPass.UPDATE_AT = DateTime.Now;
                    emailPass.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    db.SaveChanges();
                }
                ViewBag.InforMessage = "Cập nhật thông tin thành công.";
                return(View(model));
            }
            return(View(model));
        }
        public ActionResult GetPassword(SecurityQuestion model)
        {
            if (ModelState.IsValid)
            {
                var ctx       = new SmsContext();
                var questions = ctx.SECURITY_QUESTIONS.Where(u => u.ACTIVE == "A").ToList <SECURITY_QUESTIONS>();
                model.Questions = questions;
                var crypto = new SimpleCrypto.PBKDF2();
                var usr    = ctx.NGUOI_DUNG.Where(u => u.ACTIVE == "A" && u.USER_NAME.ToLower() == model.userName.ToLower()).FirstOrDefault();
                if (usr != null)
                {
                    if (string.IsNullOrEmpty(usr.EMAIL))
                    {
                        ViewBag.Message = "Account của bạn không có email để nhận mật khẩu mới. Vui lòng liên hệ admin để reset lại mật khẩu cho bạn.";
                        ctx.Dispose();
                        return(View(model));
                    }
                    var question1 = ctx.PERSONAL_QUESTIONS.Where(u => u.QUESTION_ID == model.QuestionId1 && u.USR_ID == usr.MA_NGUOI_DUNG).FirstOrDefault();
                    if (question1 != null)
                    {
                        if (!(question1.ANSWER == crypto.Compute(model.Answer1, question1.ANSWER_SALT)))
                        {
                            model.QuestionId1 = 0;
                            model.QuestionId2 = 0;
                            model.QuestionId3 = 0;
                            ViewBag.Message   = "Dữ liệu của bạn không trùng khớp với thông tin của hệ thống.";
                            ctx.Dispose();
                            return(View(model));
                        }
                    }

                    var question2 = ctx.PERSONAL_QUESTIONS.Where(u => u.QUESTION_ID == model.QuestionId2 && u.USR_ID == usr.MA_NGUOI_DUNG).FirstOrDefault();
                    if (question2 != null)
                    {
                        if (!(question2.ANSWER == crypto.Compute(model.Answer2, question2.ANSWER_SALT)))
                        {
                            model.QuestionId1 = 0;
                            model.QuestionId2 = 0;
                            model.QuestionId3 = 0;
                            ViewBag.Message   = "Dữ liệu của bạn không trùng khớp với thông tin của hệ thống.";
                            ctx.Dispose();
                            return(View(model));
                        }
                    }

                    var question3 = ctx.PERSONAL_QUESTIONS.Where(u => u.QUESTION_ID == model.QuestionId3 && u.USR_ID == usr.MA_NGUOI_DUNG).FirstOrDefault();
                    if (question3 != null)
                    {
                        if (!(question3.ANSWER == crypto.Compute(model.Answer3, question3.ANSWER_SALT)))
                        {
                            model.QuestionId1 = 0;
                            model.QuestionId2 = 0;
                            model.QuestionId3 = 0;
                            ViewBag.Message   = "Dữ liệu của bạn không trùng khớp với thông tin của hệ thống.";
                            ctx.Dispose();
                            return(View(model));
                        }
                    }

                    string newPass   = SystemConstant.RandomString(8);
                    var    email     = ctx.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL").FirstOrDefault();
                    var    emailUser = ctx.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL_USR").FirstOrDefault();
                    var    emailPass = ctx.SMS_MASTER.Where(u => u.ACTIVE == "A" && u.NAME == "EMAIL_PASS").FirstOrDefault();

                    if (email == null || string.IsNullOrEmpty(email.VALUE) ||
                        emailUser == null || string.IsNullOrEmpty(emailUser.VALUE) ||
                        emailPass == null || string.IsNullOrEmpty(emailPass.VALUE))
                    {
                        ViewBag.Message = "Hệ thống chưa được cấu hình để gửi email. Vui lòng liên hệ admin.";
                        ctx.Dispose();
                        return(View(model));
                    }
                    ;

                    if (!EmailManager.CheckForInternetConnection())
                    {
                        ViewBag.Message = "Hệ thống dùng offline. Không thể gửi mail.";
                        ctx.Dispose();
                        return(View(model));
                    }

                    try
                    {
                        usr.MAT_KHAU = crypto.Compute(newPass);
                        usr.SALT     = crypto.Salt;
                        ctx.SaveChanges();
                        SystemConstant.sendEmail(usr.EMAIL, email.VALUE, "[Vân Phước - SMS] Mật khẩu mới", "Mật khẩu mới của bạn để đăng nhập vào hệ thống là " + newPass + ". Bạn nên thay đôi mật khẩu ngay sau khi đăng nhập.",
                                                 emailUser.VALUE,
                                                 EmailManager.Decrypt(emailPass.VALUE, SystemConstant.SALT));
                        ViewBag.InforMessage = "Mật khẩu đã được gửi đến email của bạn. Vui lòng đăng nhập email để lấy mật khẩu mới.";
                        ctx.Dispose();
                        return(View(model));
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.ToString());
                        ViewBag.Message = "Không thể cập nhật được mật khẩu mới cho bạn.";
                        ctx.Dispose();
                        return(View(model));
                    }
                }
                else
                {
                    model.QuestionId1 = 0;
                    model.QuestionId2 = 0;
                    model.QuestionId3 = 0;
                    ViewBag.Message   = "Dữ liệu của bạn không trùng khớp với thông tin của hệ thống.";
                    ctx.Dispose();
                    return(View(model));
                }
            }
            return(View(model));
        }