//[ValidateInput(false)]
        public string aj_MasterUpdate(parm md)
        {

            ResultInfo rAjaxResult = new ResultInfo();
            try
            {
                var open = openLogic();
                using (db0 = getDB0())
                {

                    if (System.Globalization.CultureInfo.CurrentCulture.Name == "zh-CN")
                    {
                        open.setParmValue(ParmDefine.receiveMails_cn, md.receiveMails);
                    }
                    else
                    {
                        open.setParmValue(ParmDefine.receiveMails, md.receiveMails);
                    }

                }
                rAjaxResult.result = true;
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
            }
            return defJSON(rAjaxResult);
        }
 public string axFDelete(int id, string filekind, string filename)
 {
     ResultInfo r = new ResultInfo();
     DeleteSysFile(id, filekind, filename, ImageFileUpParm.NewsBasicSingle, "News", "News");
     r.result = true;
     return defJSON(r);
 }
 public string aj_FDelete(string id, string filekind, string filename)
 {
     ResultInfo r = new ResultInfo();
     DeleteSysFile(id, filekind, filename, ImageFileUpParm.NewsBasicSingle, "Active", "AboutUsData");
     r.result = true;
     return defJSON(r);
 }
 public async Task<string> aj_MasterInsert(AspNetRoles md)
 {
     ResultInfo rAjaxResult = new ResultInfo();
     try
     {
         if (!await roleManager.RoleExistsAsync(md.Name))
         {
             var result = await roleManager.CreateAsync(new IdentityRole(md.Name));
             if (result.Succeeded)
             {
                 var item = await roleManager.FindByNameAsync(md.Name);
                 rAjaxResult.result = true;
                 rAjaxResult.aspnetid = item.Id;
             }
             else
             {
                 rAjaxResult.result = false;
                 rAjaxResult.message = String.Join(":", result.Errors.ToArray());
             }
         }
         else
         {
             rAjaxResult.result = false;
             rAjaxResult.message = "the role " + md.Name + " has exist!";
         }
     }
     catch (Exception ex)
     {
         rAjaxResult.result = false;
         rAjaxResult.message = ex.Message;
     }
     return defJSON(rAjaxResult);
 }
 public string axFDelete(int id, string filekind, string filename)
 {
     ResultInfo r = new ResultInfo();
     DeleteSysFile(id, filekind, filename, ImageFileUpParm.ProductIndex, "NewsData", "Photo");
     r.result = true;
     return defJSON(r);
 }
        public async Task<IHttpActionResult> Put([FromBody]IdentityRole md)
        {
            ResultInfo r = new ResultInfo();
            try
            {
                //var item = await roleManager.FindByIdAsync(md.Id);

                //item.Name = md.Name;

                var result = await roleManager.UpdateAsync(md);
                if (result.Succeeded)
                {
                    r.result = true;
                }
                else
                {
                    r.message = String.Join(":", result.Errors);
                    r.result = false;
                }
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.ToString();
            }
            return Ok(r);
        }
        public string aj_MasterUpdate(parm md)
        {
            ResultInfo rAjaxResult = new ResultInfo();
            try
            {
                var open = openLogic();
                using (db0 = open.getDB0)
                {
                    open.setParmValue(ParmDefine.bufferNorth_Max,md.bufferNorth_Max);
                    open.setParmValue(ParmDefine.bufferSouth_Max, md.bufferSouth_Max);
                    open.setParmValue(ParmDefine.N_Max_joinnum, md.N_Max_joinnum);
                    open.setParmValue(ParmDefine.S_Max_joinnum, md.S_Max_joinnum);
                    open.setParmValue(ParmDefine.receiveMails, md.receiveMails);
                    open.setParmValue(ParmDefine.BccMails, md.BccMails);

                }
                rAjaxResult.result = true;
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
            }
            return defJSON(rAjaxResult);
        }
        public async Task<IHttpActionResult> Put([FromBody]ApplicationUser md)
        {
            ResultInfo r = new ResultInfo();
            try
            {
                ApplicationUser item = await UserManager.FindByIdAsync(md.Id);

                item.UserName = md.UserName;
                item.Email = md.Email;
                item.user_name_c = md.user_name_c;

                var result = await UserManager.UpdateAsync(item);
                if (result.Succeeded)
                {
                    r.result = true;
                }
                else
                {
                    r.message = String.Join(":", result.Errors);
                    r.result = false;
                }
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.ToString();
            }
            return Ok(r);
        }
        public IHttpActionResult DeleteEvapDetailExcelData()
        {
            #region 連接BusinessLogicLibary資料庫並取得資料

            ResultInfo r = new ResultInfo();
            db0 = getDB0();
            try
            {
                var getFuelItem = db0.Apply_Detail_Evaporate.Where(x => x.userid == this.UserId && x.y == allowApplyYear);
                db0.Apply_Detail_Evaporate.RemoveRange(getFuelItem);

                db0.SaveChanges();
                r.result = true;
                return Ok(r);
            }
            catch (Exception ex)
            {
                r.message = ex.Message;
                r.result = false;
                return Ok(r);
            }
            finally
            {
                db0.Dispose();
            }

            #endregion
        }
 public async Task<IHttpActionResult> Post([FromBody]AspNetRoles md)
 {
     ResultInfo r = new ResultInfo();
     try
     {
         if (!await roleManager.RoleExistsAsync(md.Name))
         {
             var result = await roleManager.CreateAsync(new IdentityRole(md.Name));
             if (result.Succeeded)
             {
                 var item = await roleManager.FindByNameAsync(md.Name);
                 r.result = true;
                 r.aspnetid = item.Id;
             }
             else
             {
                 r.result = false;
                 r.message = string.Join(":", result.Errors.ToArray());
             }
         }
         else
         {
             r.result = false;
             r.message = "The role " + md.Name + " has exist!";
         }
         return Ok(r);
     }
     catch (Exception ex)
     {
         r.result = false;
         r.message = ex.Message;
         return Ok(r);
     }
 }
        //[ValidateInput(false)]
        public string aj_MasterUpdate(parm md)
        {
            ResultInfo rAjaxResult = new ResultInfo();
            try
            {
                var open = openLogic();

                using (db0 = getDB0())
                {
                    ////產品規格
                    //open.setParmValue(ParmDefine.surfacehandle, md.surfacehandle);
                    //open.setParmValue(ParmDefine.layer, md.layer);
                    //信件
                    open.setParmValue(ParmDefine.receiveMails, md.receiveMails);
                    //open.setParmValue(ParmDefine.BccMails, md.BccMails);
                }
                rAjaxResult.result = true;
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
            }
            return defJSON(rAjaxResult);
        }
        public async Task<IHttpActionResult> Get(string id)
        {
            using (db0 = getDB0())
            {
                ApplicationUser item = await UserManager.FindByIdAsync(id);
                var get_user_roles = item.Roles;
                var system_roles = await roleManager.Roles.Where(x => x.Name != "Admins").ToListAsync();
                item.role_array = new List<RoleArray>();
                foreach (var role in system_roles)
                {
                    var role_object = get_user_roles.Where(x => x.RoleId == role.Id).FirstOrDefault();
                    if (role_object != null)
                    {
                        item.role_array.Add(new RoleArray() { role_id = role.Id, role_use = true, role_name = role.Name });
                    }
                    else
                    {
                        item.role_array.Add(new RoleArray() { role_id = role.Id, role_use = false, role_name = role.Name });
                    }
                }

                var r = new ResultInfo<ApplicationUser>() { data = item };
                return Ok(r);
            }
        }
        public IHttpActionResult DeleteMonthExcelData()
        {
            #region 連接BusinessLogicLibary資料庫並取得資料

            ResultInfo r = new ResultInfo();
            db0 = getDB0();
            try
            {
                var getMonthItem = db0.Apply_MonthAverage.Where(x => x.USERID == this.UserId && x.Y == allowApplyYear);
                db0.Apply_MonthAverage.RemoveRange(getMonthItem);

                db0.SaveChanges();
                r.result = true;
                return Ok(r);
            }
            catch (Exception ex)
            {
                r.message = ex.Message;
                r.result = false;
                return Ok(r);
            }
            finally
            {
                db0.Dispose();
            }

            #endregion
        }
 public async Task<IHttpActionResult> Get(string id)
 {
     using (db0 = getDB0())
     {
         var item = await roleManager.FindByIdAsync(id);
         var r = new ResultInfo<IdentityRole>() { data = item };
         return Ok(r);
     }
 }
        public string axFSort(int id, string filekind, IList<JsonFileInfo> file_object)
        {
            ResultInfo r = new ResultInfo();
            if (filekind == "Banner")
                rewriteJsonFile(id, filekind, "Banner", "Banner", file_object);

            r.result = true;
            return defJSON(r);
        }
        public string axFSort(int id, string filekind, IList<JsonFileInfo> file_object)
        {
            ResultInfo r = new ResultInfo();

            rewriteJsonFile(id, filekind, "NewsData", "Photo", file_object);

            r.result = true;
            return defJSON(r);
        }
        public string axFDelete(int id, string filekind, string filename)
        {
            ResultInfo r = new ResultInfo();

            if (filekind == "Banner")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.BannerIndex, "Banner", "Banner");

            r.result = true;
            return defJSON(r);
        }
 public string axFDelete(int id, string filekind, string filename)
 {
     ResultInfo r = new ResultInfo();
     if (filekind == "Photo1")
         DeleteSysFile(id, filekind, filename, ImageFileUpParm.Product, "ProductData", "Photo");
     if (filekind == "category1")
         DeleteSysFile(id, filekind, filename, ImageFileUpParm.ProductCategory, "ProductData", "Photo");
     r.result = true;
     return defJSON(r);
 }
        public string axFDelete(int id, string filekind, string filename)
        {
            ResultInfo r = new ResultInfo();

            if (filekind == "Photo1")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.Photo, "TestInfo", "Photo");

            r.result = true;
            return defJSON(r);
        }
        public string PutPurchaseCheck([FromBody]PutPurchaseCheckPram md)
        {
            ResultInfo r = new ResultInfo();
            try
            {
                using (var db0 = getDB0())
                {
                    var puschase = db0.Purchase.Find(md.id);

                    puschase.state = md.state;

                    if (md.is_mail & puschase.Sales.email != null)
                    {
                        EMailShip emd = new EMailShip();
                        emd.no = md.id;
                        emd.day = DateTime.Now.ToString("yyyy-MM-dd");
                        #region 信件發送
                        string Body = getMailBody("../Email/Email_ship", emd);//套用信件版面
                        Boolean mail;

                        #region 收信人及寄信人
                        string sendMail = openLogic().getReceiveMails()[0];

                        List<string> r_mails = new List<string>() { puschase.Sales.sales_name + ":" + puschase.Sales.email };
                        #endregion

                        mail = Mail_Send(sendMail, //寄信人
                                        r_mails.ToArray(), //收信人
                                        CommWebSetup.MailTitle_Order, //信件標題
                                        Body, //信件內容
                                        true); //是否為html格式
                        if (mail == false)
                        {
                            r.result = false;
                            r.message = "信箱號碼不正確或送信失敗!";
                            return defJSON(r);
                        }
                        #endregion
                    }

                    db0.SaveChanges();

                    r.result = true;
                }
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.Message;
            }
            return defJSON(r);
        }
 public string UpdateSort(IList<CategroySort> Data)
 {
     using (db0 = getDB0())
     {
         foreach (var q in Data)
         {
             var item = db0.All_Category_L2.Find(q.id);
             item.sort = q.sort;
         }
         db0.SaveChanges();
         var r = new ResultInfo() { result = true };
         return defJSON(r);
     }
 }
        public string sendMail(FaqMailContent md)
        {
            ResultInfo r = new ResultInfo();
            #region 驗證碼
            ValidateResponse Validate = ValidateCaptcha(md.response);
            if (!Validate.Success)
            {
                r.result = false;
                r.message = Resources.Res.Log_Err_googleValideNotEquel;
                return defJSON(r);
            }
            #endregion
            try
            {
                using (db0 = getDB0())
                {
                    if (md.email == null)
                    {
                        r.result = false;
                        r.message = Resources.Res.Log_Err_MailAddressBlank;
                        return defJSON(r);
                    }
                    #region 信件發送
                    string Body = getMailBody("FAQEmail", md);//套用信件版面
                    Boolean mail;
                    string mailfrom = md.name + ":" + md.email;

                    mail = Mail_Send(mailfrom, //寄信人
                                    openLogic().getReceiveMails(), //收信人
                                    CommWebSetup.MailTitle_FAQ, //信件標題
                                    Body, //信件內容
                                    true); //是否為html格式
                    if (mail == false)
                    {
                        r.result = false;
                        r.message = Resources.Res.Log_Err_SendMailFail;
                        return defJSON(r);
                    }
                    #endregion
                }
                r.result = true;
                r.message = Resources.Res.Log_Success_SendMail;
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.Message;
            }
            return defJSON(r);
        }
 public ResultInfo UpdateSort([FromBody]IList<CategroySort> Data)
 {//測試webapi 是否能接收IList<> 資料(測試不行)
     using (db0 = getDB0())
     {
         foreach (var q in Data)
         {
             var item = db0.All_Category_L2.Find(q.id);
             item.sort = q.sort;
         }
         db0.SaveChanges();
         var r = new ResultInfo() { result = true };
         return r;
     }
 }
        public async Task<IHttpActionResult> Put([FromBody]ApplicationUser md)
        {
            ResultInfo r = new ResultInfo();
            try
            {
                ApplicationUser item = await UserManager.FindByIdAsync(md.Id);

                item.UserName = md.UserName;
                item.Email = md.Email;
                item.user_name_c = md.user_name_c;
                item.sort = md.sort;
                //item.PasswordHash = UserManager.PasswordHasher.HashPassword(md.PasswordHash);
                

                var roles = item.Roles;

                foreach (var role in md.role_array)
                {
                    var get_now_role = roles.Where(x => x.RoleId == role.role_id).FirstOrDefault();
                    if (get_now_role != null && !role.role_use) //要刪除的權限
                    {
                        item.Roles.Remove(get_now_role);
                    }

                    if (get_now_role == null && role.role_use) //要新增的權限
                    {
                        item.Roles.Add(new IdentityUserRole() { RoleId = role.role_id });
                    }
                }

                var result = await UserManager.UpdateAsync(item);
                if (result.Succeeded)
                {
                    r.result = true;
                }
                else
                {
                    r.message = String.Join(":", result.Errors);
                    r.result = false;
                }
            }
            catch (Exception ex)
            {
                r.result = false;
                r.message = ex.ToString();
            }
            return Ok(r);
        }
        public string axFDelete(int id, string filekind, string filename)
        {
            ResultInfo r = new ResultInfo();

            if (filekind == "Banner")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.BannerRotator, "StudyAbroad", "Banner");

            if (filekind == "Photo1")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.Photo, "StudyAbroad", "Photo");

            if (filekind == "Photo2")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.PhotoCollection, "StudyAbroad", "Photo");

            r.result = true;
            return defJSON(r);
        }
        public string axFDelete(int id, string filekind, string filename)
        {
            ResultInfo r = new ResultInfo();

            if (filekind == "Photo3")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.Badge, "AbroadSchool", "Photo");

            if (filekind == "Photo1")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.Photo, "AbroadSchool", "Photo");

            if (filekind == "Photo2")
                DeleteSysFile(id, filekind, filename, ImageFileUpParm.PhotoCollectionB, "AbroadSchool", "Photo");

            r.result = true;
            return defJSON(r);
        }
        public string ajaxSendMail(JoinUsMail md)
        {
            ResultInfo r = new ResultInfo();
            try
            {
                MailMessage mms = new MailMessage();
                mms.From = new MailAddress(md.email, md.name);
                mms.Subject = string.Format(Resources.Res.Info_Mail_Title_JoinUs, md.name);

                foreach (var str in CommWebSetup.MailToList)
                {
                    var m = str.Split(':');
                    if (m.Length == 2)
                    {
                        mms.To.Add(new MailAddress(m[1], m[0]));
                    }
                    else if (m.Length == 1)
                    {
                        mms.To.Add(new MailAddress(m[0]));
                    }
                }

                mms.Body = "<html><body><p>";
                mms.Body += "姓名:" + md.name + "<br />";
                mms.Body += "電話:" + md.tel + "<br />";
                mms.Body += "地址:" + md.addr + "<br />";
                mms.Body += "興趣:" + md.interest + "<br />";
                mms.Body += "備註:" + md.memo;
                mms.Body += "</p></body></html>";
                mms.IsBodyHtml = true;
                mms.BodyEncoding = Encoding.UTF8;

                SmtpClient smtp = new SmtpClient(CommWebSetup.MailServer);
                smtp.Send(mms);

                r.result = true;
            }
            catch (Exception ex)
            {
                r.message = ex.Message;
                r.result = false;
            }

            return defJSON(r);
        }
        public string sendMail(MailContent md)
        {
            ResultInfo rAjaxResult = new ResultInfo();
            try
            {
                md.vaild = md.vaild.ToUpper();//轉大寫
                if (Session["mail"].ToString() != md.vaild)
                {
                    rAjaxResult.result = false;
                    rAjaxResult.message = "驗證碼不正確";
                    return defJSON(rAjaxResult);
                };
                var open = openLogic();
                using (db0 = getDB0())
                {
                    #region 信件發送
                    string Body = getMailBody("Email", md);//套用信件版面
                    string mailTitle = "承信推高機-線上諮詢";
                    string receiveMails = (string)open.getParmValue(ParmDefine.receiveMails);
                    string BccMails = (string)open.getParmValue(ParmDefine.BccMails);
                    Boolean mail;
                    mail = Mail_Send(md.email, //寄信人
                                    receiveMails.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries), //收信人
                                    BccMails.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries), //收信人(密件副本)
                                    mailTitle, //信件標題
                                    Body, //信件內容
                                    true); //是否為html格式
                    if (mail == false)
                    {
                        rAjaxResult.result = false;
                        rAjaxResult.message = "信箱號碼不正確或送信失敗";
                        return defJSON(rAjaxResult);
                    }
                    #endregion
                }
                rAjaxResult.result = true;

            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
            }
            return defJSON(rAjaxResult);
        }
 //[ValidateInput(false)]
 public string aj_MasterUpdate(parm md)
 {
     ResultInfo r = new ResultInfo();
     try
     {
         var open = openLogic();
         using (db0 = getDB0())
         {
             open.setParmValue(ParmDefine.receiveMails, md.receiveMails);
         }
         r.result = true;
     }
     catch (Exception ex)
     {
         r.result = false;
         r.message = ex.Message;
     }
     return defJSON(r);
 }
        public async Task<string> aj_MasterPasswordUpdate(ManageUserViewModel md)
        {
            ResultInfo rAjaxResult = new ResultInfo();
            try
            {
                if (ModelState.IsValid)
                {
                    IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), md.OldPassword, md.NewPassword);

                    if (result.Succeeded)
                    {
                        rAjaxResult.result = true;
                    }
                    else
                    {
                        rAjaxResult.message = String.Join(":", result.Errors);
                        rAjaxResult.result = false;
                    }
                }
                else
                {
                    List<string> errMessage = new List<string>();
                    foreach (ModelState modelState in ModelState.Values)
                        foreach (ModelError error in modelState.Errors)
                            errMessage.Add(error.ErrorMessage);

                    rAjaxResult.message = String.Join(":", errMessage);
                    rAjaxResult.result = false;
                }
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
            }

            return defJSON(rAjaxResult);

        }