Exemple #1
0
        /// <summary>
        /// 修改密碼
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="password">The password.</param>
        /// <returns>是否執行成功</returns>
        public CiResult DbUpdatePassword(Guid id, string password)
        {
            CiResult ciResult = new CiResult();

            var   passHash = Crypto.SHA256(password + Salt);
            Admin data     = Db.Admins.Find(id);

            if (data != null)
            {
                try
                {
                    data.Password = passHash;
                    Db.SaveChanges();

                    ciResult.Message      = string.Format("[{0}]密碼修改成功。", data.Account);
                    ciResult.ReturnResult = ReturnResult.Success;
                }
                catch (Exception)
                {
                    ciResult.Message = "密碼修改失敗。";
                }
            }
            else
            {
                ciResult.Message = "帳號不存在,無法修改。";
            }

            return(ciResult);
        }
Exemple #2
0
        public ActionResult SiteInfo(SiteInfoViewModel model, List <UploadViewModel> ImageModel)
        {
            var result = new CiResult();

            var uploadResult = FileUpload(ImageModel);

            if (!uploadResult.IsSuccess)
            {
                result.Message = uploadResult.Message;
            }
            else
            {
                model.MetaTagOgImage = uploadResult.Data;
            }

            //save
            if (string.IsNullOrEmpty(result.Message))
            {
                result = service.Save(SystemSettingType.SiteInfo, model);
            }

            //web reset
            if (result.IsSuccess)
            {
                var applicationHelper = new ApplicationHelper();
                applicationHelper.RemoveAll();
                applicationHelper.Init();
            }

            return(Json(result));
        }
Exemple #3
0
        /// <summary>
        /// 取得選單
        /// </summary>
        /// <param name="position">The position.</param>
        /// <returns></returns>
        private CiResult <List <TreeWebViewModel> > GetMenu(MenuPosition position)
        {
            var result = new CiResult <List <TreeWebViewModel> >();

            try
            {
                var data = service.GetTrees(null, new ItemTreeFilter
                {
                    MenuPosition  = position,
                    ItemType      = ItemType.Category,
                    LangType      = ApplicationHelper.DefaultLanguage,
                    SelectEnabled = true,
                    EmptyContinue = (position == MenuPosition.Bottom)
                });

                result.Data      = TransModel(data);
                result.IsSuccess = true;
            }
            catch (Exception e)
            {
                result.Message = e.Message;
            }

            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 新增資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns>RoleId</returns>
        public CiResult <Guid> DbCreate(Role model)
        {
            CiResult <Guid> ciResult = new CiResult <Guid>();

            try
            {
                var data = new Role
                {
                    Id       = Guid.NewGuid(),
                    Name     = model.Name,
                    Sort     = model.Sort,
                    IsDelete = false
                };
                Db.Roles.Add(data);
                Db.SaveChanges();

                ciResult.Data         = data.Id;
                ciResult.Message      = string.Format("[{0}]新增成功。", data.Name);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = "新增失敗。";
            }

            return(ciResult);
        }
        /// <summary>
        /// 刪除
        /// </summary>
        /// <returns></returns>
        public ActionResult DeleteMyChild(Guid childID, string captcha)
        {
            var result = new CiResult();

            //驗證碼
            if (string.IsNullOrWhiteSpace(captcha) || SessionManager.Captcha != captcha)
            {
                result.Message = SystemMessage.CaptchaError;
            }

            //save
            if (string.IsNullOrEmpty(result.Message))
            {
                result = service.DeleteMyChild(SessionManager.UserID, childID);
            }

            //show message
            if (!result.IsSuccess)
            {
                SetAlertMessage(result.Message, AlertType.error);
            }
            else
            {
                SetAlertMessage(result.Message, AlertType.success);
            }

            return(RedirectToAction("MyChildren"));
        }
Exemple #6
0
        public ActionResult Edit(RoleViewModel model)
        {
            var data = roleService.GetById(model.Role.Id);

            if (data == null)
            {
                return(HttpNotFound());
            }

            // 修改角色
            CiResult result = roleService.DbUpdate(model.Role);

            TempData["alert"] = result.Message;
            if (result.ReturnResult == ReturnResult.Success)
            {
                // 修改選單list
                CiResult resultMenu = roleService.DbUpdateRoleMenus(model.Role.Id, model.MenuCheckList);
                TempData["alert"] += resultMenu.Message;
                if (resultMenu.ReturnResult == ReturnResult.Success)
                {
                    return(RedirectToAction("Index", new { }));
                }
            }

            return(View(model));
        }
        /// <summary>
        /// 新增資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns>RoleId</returns>
        public CiResult<Guid> DbCreate(Role model)
        {
            CiResult<Guid> ciResult = new CiResult<Guid>();

            try
            {
                var data = new Role
                {
                    Id = Guid.NewGuid(),
                    Name = model.Name,
                    Sort = model.Sort,
                    IsDelete = false
                };
                Db.Roles.Add(data);
                Db.SaveChanges();

                ciResult.Data = data.Id;
                ciResult.Message = string.Format("[{0}]新增成功。", data.Name);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = "新增失敗。";
            }

            return ciResult;
        }
Exemple #8
0
        public async Task <ActionResult> ChangeDetailStatus(Guid detailid, OrderStatus status)
        {
            var result = new CiResult();

            //訂單
            var orderDetail = service.GetDetail(detailid);

            // 訂購商品前檢查
            var preCheck = service.ItemPreCheckWithID(SessionManager.UserID, orderDetail.ItemID, checkStock: false, checkUser: false);

            if (!preCheck.IsSuccess)
            {
                result.Message = preCheck.Message;
            }

            //save
            if (string.IsNullOrEmpty(result.Message))
            {
                result = service.ChangeDetailStatus(detailid, status, AccountType.Member);
            }

            //show message
            if (!result.IsSuccess)
            {
                SetAlertMessage(result.Message, AlertType.error);
            }
            else
            {
                SetAlertMessage(result.Message, AlertType.success);
            }

            //通知信
            if (result.IsSuccess && status != OrderStatus.Delete)
            {
                if (result.IsSuccess)
                {
                    //通知選手參賽
                    var mailType = status == OrderStatus.TeamEditDone ? SystemMailType.MemberEnter : (SystemMailType)status;
                    await SendOrderDetailMail(detailid, orderDetail.erp_Order.StructureID, mailType);
                }
            }

            //return
            //if (result.IsSuccess && status == OrderStatus.Delete)
            //{
            //    //列表頁
            //    return RedirectToAction("Order", "Member", new { type = order.StructureID });
            //}
            //else if (result.IsSuccess && toSuccessView)
            //{
            //    //成功頁
            //    ClearSlertMessage();
            //    return Success(id);
            //}
            //else
            //{
            //編輯/瀏覽頁
            return(RedirectToAction("Competition", new { id = orderDetail.OrderID }));
            // }
        }
Exemple #9
0
        /// <summary>
        /// 上傳圖片共用
        /// </summary>
        /// <param name="ImageModel">The image model.</param>
        /// <returns>fileUploadPath</returns>
        private CiResult <string> FileUpload(List <UploadViewModel> ImageModel)
        {
            var result = new CiResult <string> {
                IsSuccess = true
            };

            if (ImageModel != null)
            {
                //old
                if (ImageModel[0].FileStatus != FileStatus.Delete)
                {
                    result.Data = ImageModel[0].FilePath;
                }

                //fileUpload
                if (ImageModel[0].FileUpload != null)
                {
                    var fileFolder   = UploadTool.GetFileFolder(SessionManager.Client.SystemName, SourceType.System);
                    var uploadResult = UploadTool.FileUpload(ImageModel[0].FileUpload, ImageModel[0].FileType, fileFolder);
                    if (!uploadResult.IsSuccess)
                    {
                        result.Message   = uploadResult.Message;
                        result.IsSuccess = false;
                    }
                    else
                    {
                        result.Data = uploadResult.Data.FilePath;
                    }
                }
            }

            return(result);
        }
Exemple #10
0
        /// <summary>
        /// 重寄驗證信
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public async Task <ActionResult> SendConfirmMail(Guid id)
        {
            var result = new CiResult <mgt_User>();
            var user   = service.Get(id);

            //check mail
            var model = new SendEmailViewModel
            {
                Email          = user.Email,
                SystemMailType = SystemMailType.ConfirmEmail
            };

            result = service.SendValidCodeCheck(model);

            //send
            if (result.IsSuccess)
            {
                var mailService = new MailService(SessionManager.Client.ID);
                var mailContent = new ReplaceMailContent
                {
                    UserName  = result.Data.Name,
                    UserEmail = model.Email
                };
                var mailResult = await mailService.SendEmail(result.Data.ID, mailContent, model.SystemMailType, model.ValidType, fromFn : "Admin_SendConfirmMail");

                return(Json(mailResult, JsonRequestBehavior.AllowGet));
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemple #11
0
        public ActionResult Create(Menu model)
        {
            if (ModelState.IsValid)
            {
                CiResult <Guid> result = menuService.Create(model);
                TempData["alert"] = result.Message;

                if (result.ReturnResult == ReturnResult.Success)
                {
                    return(RedirectToAction("Index", new { typeOpt = model.Type, currentId = result.Data }));
                }
            }


            // 驗證失敗錯誤訊息
            var errors = ModelState.Keys.SelectMany(key => ModelState[key].Errors);

            foreach (var err in errors)
            {
                TempData["alert"] += err.ErrorMessage;
            }

            ViewBag.infoList = GetSelect(null, model.ParentId, (MenuType)model.Type);
            ViewBag.TypeOpt  = model.Type;
            return(View(model));
        }
Exemple #12
0
        public async Task <ActionResult> SendValidCode(SendEmailViewModel model)
        {
            var result = new CiResult <mgt_User>();

            //驗證碼
            if (string.IsNullOrWhiteSpace(model.Captcha) || SessionManager.Captcha != model.Captcha)
            {
                result.Message = SystemMessage.CaptchaError;
            }

            if (string.IsNullOrEmpty(result.Message))
            {
                result = service.SendValidCodeCheck(model);
                if (result.IsSuccess)
                {
                    var mailService = new MailService(ApplicationHelper.ClientID);
                    var mailContent = new ReplaceMailContent
                    {
                        UserName  = result.Data.Name,
                        UserEmail = model.Email
                    };
                    var mailResult = await mailService.SendEmail(result.Data.ID, mailContent, model.SystemMailType, model.ValidType, fromFn : "SendValidCode");

                    return(Json(mailResult));
                }
            }

            return(Json(result));
        }
Exemple #13
0
        /// <summary>
        /// 刪除選單
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="typeOpt">The type opt.</param>
        /// <returns></returns>
        public ActionResult Delete(Guid id, MenuType typeOpt = MenuService.DefaultType)
        {
            CiResult result = menuService.Delete(id);

            TempData["alert"] = result.Message;

            return(RedirectToAction("Index", new { typeOpt }));
        }
Exemple #14
0
        /// <summary>
        /// 刪除資料
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>是否執行成功</returns>
        public ActionResult Delete(Guid id)
        {
            CiResult result = roleService.DbDelete(id);

            TempData["alert"] = result.Message;

            return(RedirectToAction("Index", new { }));
        }
Exemple #15
0
        public async Task <ActionResult> CreateAssign(Guid childID, string AssignPhoneNumber)
        {
            var result = new CiResult();
            var toUser = service.GetbyPhone(AssignPhoneNumber.ToTrim());

            if (toUser == null)
            {
                result.Message = "查無電話號碼";
            }

            if (string.IsNullOrEmpty(result.Message))
            {
                var model = new mgt_UserAssign
                {
                    UserProfileID = childID,
                    FromUser      = SessionManager.UserID,
                    ToUser        = toUser.ID
                };
                result = service.CreateAssign(model);
            }

            //通知:選手指派新增 (失敗不提醒)
            if (result.IsSuccess)
            {
                try
                {
                    var data = service.GetUserAssign(result.ID);

                    if (data.ToUser.ID == data.FromUser.ID)
                    {
                        //_Log.CreateText($"[Email no send]指派給自己: User={data.ToUser.ID}, Member={data.Member.NickName}");
                    }
                    else
                    {
                        var mailService = new MailService(ApplicationHelper.ClientID);
                        var mailContent = new ReplaceMailContent
                        {
                            UserName   = data.ToUser.Name,
                            UserEmail  = data.ToUser.Email,
                            MemberName = data.Member.NickName
                        };
                        var mailResult = await mailService.SendEmail(data.ToUser.ID, mailContent, SystemMailType.AssignCreate, fromFn : "CreateAssign");

                        if (mailResult.IsSuccess)
                        {
                            result.Message += ", " + mailResult.Message;
                        }
                    }
                }
                catch (Exception e)
                {
                    var json = _Json.ModelToJson(e);
                    _Log.CreateText(json);
                }
            }

            return(Json(result));
        }
Exemple #16
0
        /// <summary>
        /// 新增資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult <Guid> Create(Menu model)
        {
            CiResult <Guid> ciResult = new CiResult <Guid>();

            //var maxSort = Db.Menus.Where(x => x.ParentId == model.ParentId).OrderByDescending(x => x.Sort).FirstOrDefault();
            //int sort = 0;
            //if (maxSort != null)
            //{
            //    sort = maxSort.Sort + 3;
            //}

            try
            {
                var data = new Menu
                {
                    Id          = Guid.NewGuid(),
                    NativeName  = model.NativeName.ToTrim(),
                    Controller  = model.Controller.ToTrim(), // RoleName=Controler+Action
                    Action      = model.Action.ToTrim(),
                    Description = model.Description,
                    Url         = model.Url.ToTrim(),
                    Type        = model.Type,
                    IsMenu      = model.IsMenu,
                    Sort        = model.Sort, // sort,
                    IsDelete    = false
                };

                // 第二層
                if (model.ParentId != null)
                {
                    var parent = Db.Menus.Find(model.ParentId);
                    if (parent != null)
                    {
                        data.ParentId = model.ParentId;
                    }
                    else
                    {
                        ciResult.Message = string.Format("父層[{0}]不存在", model.ParentId);
                    }
                }
                Db.Menus.Add(data);
                Db.SaveChanges();

                ciResult.Data         = data.Id;
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = string.Format("[{0}]建立失敗。", model.NativeName);
            }

            return(ciResult);
        }
Exemple #17
0
        public ActionResult RoleEdit(mgt_UserRoleRelation model, bool isCreate)
        {
            var result = isCreate ?
                         service.CreateUserMemberRoles(model, SessionManager.UserID)
                : service.UpdateUserMemberRoles(model, SessionManager.UserID);

            var dataResult = new CiResult <string>();

            dataResult.IsSuccess = result.IsSuccess;
            dataResult.Message   = result.Message;
            dataResult.Data      = $"?id={model.ID}";

            return(Json(dataResult));
        }
Exemple #18
0
        /// <summary>
        /// 單筆簡訊發送
        /// </summary>
        /// <param name="mobileNumber">手機號碼</param>
        /// <param name="allowLogNessage">允許長訊息</param>
        /// <returns></returns>
        public async Task <CiResult <SMSViewModel> > Send(Guid userID, string phoneNumber, bool allowLogNessage = false)
        {
            //判斷字元數,如果超過70個字則使用長簡訊發送
            //簡訊發送 http://smexpress.mitake.com.tw:9600/SmSendGet.asp
            //單筆長簡訊 http://smexpress.mitake.com.tw:7002/SpLmGet.asp

            var result = new CiResult <SMSViewModel>();

            if (!_Check.IsPhone(phoneNumber) || !setting.IsEnabled)
            {
                return(result);
            }

            if (!allowLogNessage && message.Length >= 70)
            {
                _Log.CreateText("SendSms 訊息過長: " + message);
                return(result);
            }

            var    bData     = Encoding.GetEncoding("big5");
            string messageEn = HttpUtility.UrlEncode(message, bData);

            string url = message.Length >= 70 ?
                         "http://smexpress.mitake.com.tw:7002/SpLmGet" :
                         "http://smexpress.mitake.com.tw:9600/SmSendGet.asp"
                         + $"?username={setting.Username}&password={setting.Password}"
                         + $"&DestName={userID}&dstaddr={phoneNumber}&smbody={messageEn}";

            //+"&response=http://192.168.1.200/smreply.asp" //狀態通知網址

            try
            {
                var isTest    = false;
                var urlResult = isTest ?
                                "[1]\r\nmsgid=1472692279\r\nstatuscode=1\r\nAccountPoint=1415\r\n" :
                                _Web.RequestUrlGet(url);

                var data = ConverResult(urlResult);
                result.Data      = data.FirstOrDefault();
                result.IsSuccess = true;
            }

            catch (Exception e)
            {
                _Log.CreateText($"SendSms : " + _Json.ModelToJson(e));
            }

            return(result);
        }
Exemple #19
0
        public ActionResult UpdateMyChild(mgt_UserProfile model, bool IsCreate)
        {
            var result = new CiResult();

            model.CreateUser = SessionManager.UserID;
            if (IsCreate)
            {
                result = service.CreateMyChild(model);
            }
            else
            {
                result = service.UpdateMyChild(model);
            }

            return(Json(result));
        }
Exemple #20
0
        public async Task <ActionResult> CathayPay()
        {
            var result = new CiResult <List <erp_Order> >();

            try
            {
                foreach (string key in Request.Form.Keys)
                {
                    //key=  <?xml version
                    //Request.Form[key]=   "1.0" encoding="big5"?><MYB2B><HEADER><TXNO>
                    var message = key + "=" + Request.Form[key];
                    _Log.CreateText("CathayPay: " + message);

                    //save message
                    result = service.CathyPayMessage(message);

                    //通知信
                    var mailService = new MailService(ApplicationHelper.ClientID);
                    if (result.IsSuccess)
                    {
                        foreach (var order in result.Data)
                        {
                            await SendOrderMail(order.ID, order.StructureID, (SystemMailType)order.OrderStatus, order.CreateUser, fromFn : $"CathayPay");
                        }
                    }

                    if (result.IsSuccess)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                _Log.CreateText("CathayPay error" + _Json.ModelToJson(ex));
            }


            if (result.IsSuccess)
            {
                return(Content("0000"));
            }
            else
            {
                return(Content(""));
            }
        }
Exemple #21
0
        /// <summary>
        /// 修改資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult Update(Menu model)
        {
            CiResult ciResult = new CiResult();

            try
            {
                var data = Db.Menus.Find(model.Id);

                data.NativeName  = model.NativeName.ToTrim();
                data.Controller  = model.Controller.ToTrim();
                data.Action      = model.Action.ToTrim();
                data.Description = model.Description;
                data.Url         = model.Url.ToTrim();
                data.IsMenu      = model.IsMenu;
                data.Sort        = model.Sort;

                // 第二層
                if (model.ParentId != null)
                {
                    var parent = Db.Menus.Find(model.ParentId);
                    if (parent != null)
                    {
                        data.ParentId = model.ParentId;
                    }
                    else
                    {
                        ciResult.Message = string.Format("父層[{0}]不存在", model.ParentId);
                    }
                }
                else
                {
                    data.ParentId = null;
                }

                Db.SaveChanges();

                ciResult.Message      = string.Format("[{0}]修改成功。", model.NativeName);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = string.Format("[{0}]修改失敗。", model.NativeName);
            }

            return(ciResult);
        }
Exemple #22
0
        /// <summary>
        /// 取得內頁
        /// </summary>
        /// <param name="routeName">Name of the route.</param>
        /// <returns></returns>
        public CiResult <ItemWebViewModel> GetDetail(string routeName)
        {
            string viewName = "";
            var    data     = Get(routeName, ref viewName, ItemType.Article);

            var result = new CiResult <ItemWebViewModel>
            {
                IsSuccess = data.IsSuccess,
                Message   = data.Message
            };

            if (data != null)
            {
                result.Data = (ItemWebViewModel)data.Data;
            }

            return(result);
        }
Exemple #23
0
        /// <summary>
        /// 取得列表頁
        /// </summary>
        /// <param name="routeName">Name of the route.</param>
        /// <returns></returns>
        public CiResult <ItemListModel> GetList(string routeName)
        {
            string viewName = "";
            var    data     = Get(routeName, ref viewName);// ItemType.Category

            var result = new CiResult <ItemListModel>
            {
                IsSuccess = data.IsSuccess,
                Message   = data.Message
            };

            if (data != null)
            {
                result.Data = (ItemListModel)data.Data;
            }

            return(result);
        }
        /// <summary>
        /// Item圖片上傳
        /// </summary>
        /// <param name="upload">The upload.</param>
        /// <param name="filetype">The filetype.</param>
        /// <param name="sourceType">Type of the source.</param>
        /// <param name="sort">The sort.</param>
        /// <returns></returns>
        private CiResult <cms_ItemFile> ItemFileUpload(HttpPostedFileBase upload, FileType filetype, SourceType sourceType, int imageWidth = 0, int imageHeight = 0, int sort = 0, string subject = "")
        {
            var result = new CiResult <cms_ItemFile>();

            var fileFolder   = UploadTool.GetFileFolder(SessionManager.Client.SystemName, sourceType);
            var uploadResult = UploadTool.FileUpload(upload, filetype, fileFolder, true, imageWidth, imageHeight);

            if (!uploadResult.IsSuccess)
            {
                result.Message = uploadResult.Message;
            }
            else
            {
                uploadResult.Data.Subject = subject;
                result.Data      = ToIitemFile(uploadResult.Data, sourceType, sort);
                result.IsSuccess = true;
            }

            return(result);
        }
Exemple #25
0
        public ActionResult Create(AccountViewModel model)
        {
            // 新增帳號
            CiResult <Guid> result = accountService.DbCreate(model.AccountView.Account, model.AccountView.Password);

            TempData["alert"] = result.Message;

            if (result.ReturnResult == ReturnResult.Success)
            {
                Guid adminId = result.Data;
                // 新增角色list
                CiResult resultRole = accountService.DbUpdateAdminRoles(adminId, model.RoleCheckList);
                TempData["alert"] += resultRole.Message;
                if (resultRole.ReturnResult == ReturnResult.Success)
                {
                    return(RedirectToAction("Index", "Account"));
                }
            }

            return(View(model));
        }
Exemple #26
0
        /// <summary>
        /// 刪除資料
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>是否執行成功</returns>
        public CiResult Delete(Guid id)
        {
            CiResult ciResult = new CiResult();

            Menu data = Db.Menus.Find(id);

            if (data != null)
            {
                data.IsDelete = true;
                Db.SaveChanges();

                ciResult.Message      = string.Format("[{0}]刪除成功。", data.NativeName);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            else
            {
                ciResult.Message = "資料不存在,無法刪除。";
            }

            return(ciResult);
        }
        public ActionResult OptionEdit(EditItemViewModel model, bool isCreate)
        {
            var proResult = Process(model);

            if (!proResult.IsSuccess)
            {
                return(Json(proResult));
            }

            var result = isCreate ?
                         service.Create(proResult.Data) : service.Update(proResult.Data);

            var dataResult = new CiResult <string>();

            dataResult.IsSuccess = result.IsSuccess;
            dataResult.Message   = result.Message;
            dataResult.Data      = $"?itemID={model.Item.ID}&langType={model.ItemLanguage.LanguageType}";
            dataResult.ID        = model.Item.ID;

            return(Json(dataResult));
        }
Exemple #28
0
        public ActionResult Create(RoleViewModel model)
        {
            // 新增角色
            CiResult <Guid> result = roleService.DbCreate(model.Role);

            TempData["alert"] = result.Message;

            if (result.ReturnResult == ReturnResult.Success)
            {
                Guid roleId = result.Data;
                // 新增選單list
                CiResult resultMenu = roleService.DbUpdateRoleMenus(roleId, model.MenuCheckList);
                TempData["alert"] += resultMenu.Message;
                if (resultMenu.ReturnResult == ReturnResult.Success)
                {
                    return(RedirectToAction("Index", "Role"));
                }
            }

            return(View(model));
        }
Exemple #29
0
        /// <summary>
        /// 取得選單 by cache
        /// </summary>
        /// <param name="position">The position.</param>
        /// <returns></returns>
        public CiResult <List <TreeWebViewModel> > GetMenuByCache(MenuPosition position)
        {
            var result      = new CiResult <List <TreeWebViewModel> >();
            var cacheHelper = new CacheHelper();
            var chacheName  = $"{ApplicationHelper.ClientID}_menu_{position.ToString()}";

            //get cache
            result.Data = cacheHelper.Get <List <TreeWebViewModel> >(chacheName);

            //set cache
            if (result.Data == null)
            {
                result = GetMenu(position);
                if (result.IsSuccess && !string.IsNullOrEmpty(chacheName))
                {
                    cacheHelper.Set(chacheName, result.Data, 72);
                }
            }

            return(result);
        }
Exemple #30
0
        public ActionResult Edit(AccountViewModel model)
        {
            var data = accountService.GetById(model.AccountView.Id);

            if (data == null)
            {
                return(HttpNotFound());
            }

            // 更改帳號
            CiResult resultAcount = accountService.DbUpdateAccount(model.AccountView.Id, model.AccountView.Account);

            TempData["alert"] = resultAcount.Message;
            if (resultAcount.ReturnResult != ReturnResult.Success)
            {
                return(View(model));
            }

            // 更改密碼
            if (!string.IsNullOrEmpty(model.AccountView.Password))
            {
                CiResult resultPassword = accountService.DbUpdatePassword(model.AccountView.Id, model.AccountView.Password);
                TempData["alert"] += resultPassword.Message;
                if (resultPassword.ReturnResult != ReturnResult.Success)
                {
                    return(View(model));
                }
            }

            // 更改角色list
            CiResult resultRole = accountService.DbUpdateAdminRoles(model.AccountView.Id, model.RoleCheckList);

            TempData["alert"] += resultRole.Message;
            if (resultRole.ReturnResult != ReturnResult.Success)
            {
                return(View(model));
            }

            return(RedirectToAction("Index"));
        }
Exemple #31
0
        /// <summary>
        /// 刪除帳號
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>是否執行成功</returns>
        public CiResult DbDelete(Guid id)
        {
            CiResult ciResult = new CiResult();

            Admin data = Db.Admins.Find(id);

            if (data != null)
            {
                data.DeleteTime = DateTime.UtcNow;
                data.IsDelete   = true;
                Db.SaveChanges();

                ciResult.Message      = string.Format("[{0}]刪除成功。", data.Account);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            else
            {
                ciResult.Message = "帳號不存在,無法刪除";
            }

            return(ciResult);
        }
        /// <summary>
        /// 修改帳號
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="account">The account.</param>
        /// <returns> 是否執行成功 </returns>
        public CiResult DbUpdateAccount(Guid id, string account)
        {
            CiResult ciResult = new CiResult();

            Admin data = Db.Admins.Find(id);

            if (data != null)
            {
                try
                {
                    var exist = CheckName(account, id);
                    if (!exist)
                    {
                        data.Account = account;
                        Db.SaveChanges();

                        ciResult.Message = string.Format("[{0}]帳號修改成功。", data.Account);
                        ciResult.ReturnResult = ReturnResult.Success;
                    }
                    else
                    {
                        ciResult.Message = "帳號已被註冊。";
                    }
                }
                catch (Exception)
                {
                    ciResult.Message = "帳號修改失敗。";
                }
            }
            else
            {
                ciResult.Message = "帳號不存在,無法修改。";
            }

            return ciResult;
        }
        /// <summary>
        /// 修改密碼
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="password">The password.</param>
        /// <returns>是否執行成功</returns>
        public CiResult DbUpdatePassword(Guid id, string password)
        {
            CiResult ciResult = new CiResult();

            var passHash = Crypto.SHA256(password + Salt);
            Admin data = Db.Admins.Find(id);

            if (data != null)
            {
                try
                {
                    data.Password = passHash;
                    Db.SaveChanges();

                    ciResult.Message = string.Format("[{0}]密碼修改成功。", data.Account);
                    ciResult.ReturnResult = ReturnResult.Success;
                }
                catch (Exception)
                {
                    ciResult.Message = "密碼修改失敗。";
                }
            }
            else
            {
                ciResult.Message = "帳號不存在,無法修改。";
            }

            return ciResult;
        }
        /// <summary>
        /// 新增帳號
        /// </summary>
        /// <param name="account">The account.</param>
        /// <param name="password">The password.</param>
        /// <returns>Admin id</returns>
        public CiResult<Guid> DbCreate(string account, string password)
        {
            CiResult<Guid> ciResult = new CiResult<Guid>();

            try
            {
                var exist = CheckName(account, null);
                if (!exist)
                {
                    var passHash = Crypto.SHA256(password + Salt);
                    var data = new Admin
                    {
                        Id = Guid.NewGuid(),
                        Account = account,
                        Password = passHash,
                        CreateTime = DateTime.Now,
                        IsDelete = false
                    };
                    Db.Admins.Add(data);
                    Db.SaveChanges();

                    ciResult.Data = data.Id;
                    ciResult.Message = string.Format("[{0}]帳號新增成功。", data.Account);
                    ciResult.ReturnResult = ReturnResult.Success;
                }
                else
                {
                    ciResult.Message = "帳號已被註冊。";
                }
            }
            catch (Exception)
            {
                ciResult.Message = "帳號新增失敗。";
            }

            return ciResult;
        }
        /// <summary>
        /// 修改角色選單
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="menuCheck">The menu check.</param>
        /// <returns></returns>
        public CiResult DbUpdateRoleMenus(Guid id, List<TreeViewModel> menuCheck)
        {
            CiResult ciResult = new CiResult();

            // treeview reindex 無遞迴
            var data = Db.Roles.Find(id);
            if (data != null)
            {
                try
                {
                    data.Menus.Clear();

                    foreach (var c in menuCheck)
                    {
                        if (c.IsChecked)
                        {
                            var menu = Db.Menus.Find(c.Id);
                            data.Menus.Add(menu);
                        }
                    }

                    Db.SaveChanges();

                    ciResult.ReturnResult = ReturnResult.Success;
                }
                catch (Exception)
                {
                    ciResult.Message = "選單修改失敗。";
                }

            }
            else
            {
                ciResult.Message = "角色不存在,無法修改。";
            }
            return ciResult;
        }
        /// <summary>
        /// 新增資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult<Guid> Create(Menu model)
        {
            CiResult<Guid> ciResult = new CiResult<Guid>();

            //var maxSort = Db.Menus.Where(x => x.ParentId == model.ParentId).OrderByDescending(x => x.Sort).FirstOrDefault();
            //int sort = 0;
            //if (maxSort != null)
            //{
            //    sort = maxSort.Sort + 3;
            //}

            try
            {
                var data = new Menu
                {
                    Id = Guid.NewGuid(),
                    NativeName = model.NativeName.ToTrim(),
                    Controller = model.Controller.ToTrim(), // RoleName=Controler+Action
                    Action = model.Action.ToTrim(),
                    Description = model.Description,
                    Url = model.Url.ToTrim(),
                    Type = model.Type,
                    IsMenu = model.IsMenu,
                    Sort = model.Sort, // sort,
                    IsDelete = false
                };

                // 第二層
                if (model.ParentId != null)
                {
                    var parent = Db.Menus.Find(model.ParentId);
                    if (parent != null)
                    {
                        data.ParentId = model.ParentId;
                    }
                    else
                    {
                        ciResult.Message = string.Format("父層[{0}]不存在", model.ParentId);
                    }
                }
                Db.Menus.Add(data);
                Db.SaveChanges();

                ciResult.Data = data.Id;
                ciResult.ReturnResult = ReturnResult.Success;

            }
            catch (Exception)
            {
                ciResult.Message = string.Format("[{0}]建立失敗。", model.NativeName);
            }

            return ciResult;
        }
        /// <summary>
        /// 修改資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult Update(Menu model)
        {
            CiResult ciResult = new CiResult();

            try
            {
                var data = Db.Menus.Find(model.Id);

                data.NativeName = model.NativeName.ToTrim();
                data.Controller = model.Controller.ToTrim();
                data.Action = model.Action.ToTrim();
                data.Description = model.Description;
                data.Url = model.Url.ToTrim();
                data.IsMenu = model.IsMenu;
                data.Sort = model.Sort;

                // 第二層
                if (model.ParentId != null)
                {
                    var parent = Db.Menus.Find(model.ParentId);
                    if (parent != null)
                    {
                        data.ParentId = model.ParentId;
                    }
                    else
                    {
                        ciResult.Message = string.Format("父層[{0}]不存在", model.ParentId);
                    }
                }
                else
                {
                    data.ParentId = null;
                }

                Db.SaveChanges();

                ciResult.Message = string.Format("[{0}]修改成功。", model.NativeName);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = string.Format("[{0}]修改失敗。", model.NativeName);
            }

            return ciResult;
        }
        /// <summary>
        /// 刪除資料
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>是否執行成功</returns>
        public CiResult Delete(Guid id)
        {
            CiResult ciResult = new CiResult();

            Menu data = Db.Menus.Find(id);

            if (data != null)
            {
                data.IsDelete = true;
                Db.SaveChanges();

                ciResult.Message = string.Format("[{0}]刪除成功。", data.NativeName);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            else
            {
                ciResult.Message = "資料不存在,無法刪除。";
            }

            return ciResult;
        }
        /// <summary>
        /// 修改帳號角色
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="roleCheck">The role check.</param>
        /// <returns></returns>
        public CiResult DbUpdateAdminRoles(Guid id, List<RoleCheck> roleCheck)
        {
            CiResult ciResult = new CiResult();

            var data = Db.Admins.Find(id);
            if (data != null)
            {
                try
                {
                    data.Roles.Clear();

                    foreach (var c in roleCheck)
                    {
                        if (c.IsChecked)
                        {
                            var role = Db.Roles.Find(c.Id);
                            data.Roles.Add(role);
                        }
                    }

                    Db.SaveChanges();

                    ciResult.ReturnResult = ReturnResult.Success;
                }
                catch (Exception)
                {
                    ciResult.Message = "角色修改失敗。";
                }

            }
            else
            {
                ciResult.Message = "帳號不存在,無法修改。";
            }
            return ciResult;
        }
        /// <summary>
        /// 刪除帳號
        /// </summary>
        /// <param name="id">id</param>
        /// <returns>是否執行成功</returns>
        public CiResult DbDelete(Guid id)
        {
            CiResult ciResult = new CiResult();

            Admin data = Db.Admins.Find(id);

            if (data != null)
            {
                data.DeleteTime = DateTime.UtcNow;
                data.IsDelete = true;
                Db.SaveChanges();

                ciResult.Message = string.Format("[{0}]刪除成功。", data.Account);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            else
            {
                ciResult.Message = "帳號不存在,無法刪除";
            }

            return ciResult;
        }
        /// <summary>
        /// 修改資料
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public CiResult DbUpdate(Role model)
        {
            CiResult ciResult = new CiResult();

            try
            {
                var data = Db.Roles.Find(model.Id);

                data.Name = model.Name.ToTrim();
                data.Sort = model.Sort;

                Db.SaveChanges();

                ciResult.Message = string.Format("[{0}]修改成功。", model.Name);
                ciResult.ReturnResult = ReturnResult.Success;
            }
            catch (Exception)
            {
                ciResult.Message = string.Format("[{0}]修改失敗。", model.Name);
            }

            return ciResult;
        }