/// <summary> /// 如果要頂置 檢查頂置規則 企業APP 2筆 外部 App 2筆 /// 企業專用 true:企業APP , false:外部APP /// </summary> /// <param name="appNameCreate"></param> /// <param name="inSideOrOutSideApps"></param> /// <param name="isIncludeYourself"> 是否包含自身資料</param> /// <returns></returns> public static (bool isCheckTop, string errorMessage) IsOverTopQuantity(AppNameCreate appNameCreate, List <InSideOrOutSideApp> inSideOrOutSideApps, bool isIncludeYourself) { //置頂選項沒有 就不需要檢查 if (!appNameCreate.IsTop) { return(true, ""); } if (appNameCreate.CompanyApp) { //內部 app int inSideTop = isIncludeYourself ? inSideOrOutSideApps.Count(p => p.CompanyApp.Equals("Inside App")) : inSideOrOutSideApps.Count(p => p.CompanyApp.Equals("Inside App") && p.AppID != appNameCreate.AppID); if (inSideTop >= 2) { return(false, "企業內部 App 置頂最多為2筆"); //超過數量返回 } } else { //外部 app int outSideTop = inSideOrOutSideApps.Count(p => p.CompanyApp.Equals("Outside App")); if (outSideTop >= 2) { return(false, "外部 App 置頂最多為2筆"); } } return(true, ""); }
public IActionResult CreateApp() { //一開始新增給預設值 => //置頂 false; 預設企業; 都為 開放使用,無須授權 AppNameCreate vm = new AppNameCreate { IsTop = false, CompanyApp = true, AppOpen = true }; SelectList mcpCategories = new SelectList(_appBiz.GetCategory().Data, "Category", "Category_Name"); ViewBag.McpCategory = mcpCategories; ViewBag.AvailableGroupDefine = _appBiz.GetAvailableGroupDefine(new List <string>()).Data; ViewBag.IsReadOnly = false; return(View(vm)); }
/// <summary> /// 頁簽畫面 ViewModel /// </summary> /// <param name="appID"></param> /// <param name="appOsID"></param> /// <param name="appOsType"></param> /// <returns></returns> public TResult <AppEditViewModel> GetCreateAndEditApp(string appID, string appOsID = "", string appOsType = "") { WisAppList wisAppList = _appListService.GetAppName(appID); List <WisAppOs> wisAppOs = _appListService.GetAppOs(appID); List <WisAppPhoto> wisAppPhoto = _uploadFileService.GetPhotos(appID); List <WisAppOsOther> wisAppOsOthers = _uploadFileService.GetWisAppOsOther(appID, appOsID); AppOsInfo editAppIos = null; AppOsInfo editAppAndroid = null; List <AppOsOther> iosAppOsOther = new List <AppOsOther>(); List <AppOsOther> androidAppOsOther = new List <AppOsOther>(); //DTO AppNameCreate appNameCreate = _mapper.Map <WisAppList, AppNameCreate>(wisAppList); #region 處理 User Group Name if (!string.IsNullOrEmpty(wisAppList.AppUserGroup)) { List <string> groupID = wisAppList.AppUserGroup.Split(',').ToList(); List <WisDefineGroup> wisDefineGroups = _appListService.GetDefineGroup(groupID); //組成 DigitalHR,ML1400,WZS All users 顯示在前端 string userGroupName = string.Join(",", wisDefineGroups.Select(p => p.GroupName).ToArray().Select((s, i) => s.ToString())); appNameCreate.AppUserGroupName = userGroupName; } #endregion //透過 AppOSID 取編輯 資料 if (appOsType == "IOS") {//選取的 AppOSID 為IOS 那 Android 拿取目前已啟動的資料 editAppIos = _mapper.Map <WisAppOs, AppOsInfo>(wisAppOs.Where(p => p.OSType == OsType.Ios && p.AppOSID.ToString() == appOsID).FirstOrDefault()); editAppAndroid = _mapper.Map <WisAppOs, AppOsInfo>(wisAppOs.Where(p => p.OSType == OsType.Android && p.Status == true).FirstOrDefault()); //多載點 iosAppOsOther = _mapper.Map <List <WisAppOsOther>, List <AppOsOther> >(wisAppOsOthers.Where(p => p.OSType == OsType.Ios).ToList()); } else if (appOsType == "Android") {//選取的 AppOSID 為Android 那 IOS 拿取目前已啟動的資料 editAppIos = _mapper.Map <WisAppOs, AppOsInfo>(wisAppOs.Where(p => p.OSType == OsType.Ios && p.Status == true).FirstOrDefault()); editAppAndroid = _mapper.Map <WisAppOs, AppOsInfo>(wisAppOs.Where(p => p.OSType == OsType.Android && p.AppOSID.ToString() == appOsID).FirstOrDefault()); //多載點 androidAppOsOther = _mapper.Map <List <WisAppOsOther>, List <AppOsOther> >(wisAppOsOthers.Where(p => p.OSType == OsType.Android).ToList()); } //歷史紀錄 List <AppOsInfo> appIosHistory = _mapper.Map <List <WisAppOs>, List <AppOsInfo> >(wisAppOs.Where(p => p.OSType == OsType.Ios && p.DelFlag == false)?.OrderByDescending(p => p.CreateDT).ToList()); List <AppOsInfo> appAndroidHistory = _mapper.Map <List <WisAppOs>, List <AppOsInfo> >(wisAppOs.Where(p => p.OSType == OsType.Android && p.DelFlag == false)?.OrderByDescending(p => p.CreateDT).ToList()); //圖片資訊 List <AppPhotoContent> iosPhoto = _mapper.Map <List <WisAppPhoto>, List <AppPhotoContent> >(wisAppPhoto.Where(p => p.AppOS == OsType.Ios).ToList()); List <AppPhotoContent> androidPhoto = _mapper.Map <List <WisAppPhoto>, List <AppPhotoContent> >(wisAppPhoto.Where(p => p.AppOS == OsType.Android).ToList()); //IOS if (editAppIos != null) { editAppIos.AppName = wisAppList.AppName; editAppIos.AppNameEn = wisAppList.AppNameEn; editAppIos.Photo = iosPhoto; editAppIos.AppOsHistory = appIosHistory ?? new List <AppOsInfo>(); editAppIos.AppOsOther = iosAppOsOther; editAppIos.DownloadUrlList = iosAppOsOther.Select(p => new DownloadUrlList { Site = p.Site, Url = p.FilePath }).ToList(); } else { //為 null 代表是只建立 app Name 而已 但是一定有 App ID 因為一定有建立 Create App name editAppIos = new AppOsInfo { AppID = appID, AppName = wisAppList.AppName, AppNameEn = wisAppList.AppNameEn, OSType = OsType.Ios, Status = true, Photo = iosPhoto, AppOsHistory = appIosHistory ?? new List <AppOsInfo>(), AppOsOther = iosAppOsOther }; } //Android if (editAppAndroid != null) { editAppAndroid.AppName = wisAppList.AppName; editAppAndroid.AppNameEn = wisAppList.AppNameEn; editAppAndroid.Photo = androidPhoto; editAppAndroid.AppOsHistory = appAndroidHistory ?? new List <AppOsInfo>(); editAppAndroid.AppOsOther = androidAppOsOther; editAppAndroid.DownloadUrlList = androidAppOsOther.Select(p => new DownloadUrlList { Site = p.Site, Url = p.FilePath }).ToList(); } else { //為 null 代表是只建立 app Name 而已 但是一定有 App ID 因為一定有建立 Create App name editAppAndroid = new AppOsInfo { AppID = appID, AppName = wisAppList.AppName, AppNameEn = wisAppList.AppNameEn, OSType = OsType.Android, Status = true, Photo = androidPhoto, AppOsHistory = appAndroidHistory ?? new List <AppOsInfo>(), AppOsOther = androidAppOsOther }; } AppEditViewModel appEditViewModel = new AppEditViewModel { AppName = appNameCreate, AppIos = editAppIos, AppAndroid = editAppAndroid }; return(TResult <AppEditViewModel> .OK(appEditViewModel, "OK")); }
/// <summary> /// 新增時需檢查置頂資料 /// </summary> /// <param name="appNameCreate"></param> /// <returns></returns> public TResult <ResponseAppNameCreate> InsertAppName(AppNameCreate appNameCreate) { List <WisAppUserList> wisAppUserList = new List <WisAppUserList>(); bool isExisted = _appListService.AppNameIsExisted(appNameCreate.AppName); if (appNameCreate.Category == "None") { return(TResult <ResponseAppNameCreate> .Fail(new ResponseAppNameCreate { IsSuccessful = false, AppID = "" }, FaultInfoRcConstants.ERR_CODE_FAIL, "請選擇類別")); } if (isExisted) { return(TResult <ResponseAppNameCreate> .Fail(new ResponseAppNameCreate { IsSuccessful = false, AppID = "" }, FaultInfoRcConstants.ERR_CODE_FAIL, "App 名稱已存在")); } //撈出置頂資料 List <InSideOrOutSideApp> inSideOrOutSideApps = _appListService.GetIsTopAppList(); #region Check 置頂 //如果要頂置 檢查頂置規則 企業APP 2筆 外部 App 2筆 var result = IsTopCalculateHelper.IsOverTopQuantity(appNameCreate, inSideOrOutSideApps, true); if (!result.isCheckTop) { return(TResult <ResponseAppNameCreate> .Fail(new ResponseAppNameCreate { IsSuccessful = false, AppID = "" }, FaultInfoRcConstants.ERR_CODE_FAIL, result.errorMessage)); } #endregion //DTO WisAppList wisApp = _mapper.Map <AppNameCreate, WisAppList>(appNameCreate); string appID = Guid.NewGuid().ToString(); DateTime date = DateTime.Now; appNameCreate.AppID = appID; wisApp.AppID = appID; wisApp.LastUpdateUser = "******"; wisApp.LastUpdateDT = date; wisApp.CreateDT = date; wisApp.Delflag = false; //開放使用,無須授權 1:開放,0:有授權名單 #region 授權群組 設定 AppOen 1:開放,0:有授權名單 List <string> groupID = wisApp.AppUserGroup?.Split(',').ToList(); List <WisDefineGroup> wisDefineGroups = _appListService.GetDefineGroup(groupID); foreach (var item in wisDefineGroups) { //新增群組 if (!string.IsNullOrEmpty(item.GroupInclude)) { List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findGroup = item.GroupInclude.Split(',').ToList(); if (item.SelectGroup == "1") // 找Site { mdsHrEmpData.AddRange(_appListService.GetHrEmpByLocation(findGroup)); } else // 找 DeptID { mdsHrEmpData.AddRange(_appListService.GetHrEmpByDept(findGroup)); } List <WisAppUserList> findAppUser = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); } //新增 自定義的user if (!string.IsNullOrEmpty(item.AccountInclude)) { List <MdsAdUserData> mdsAdUserDatas = new List <MdsAdUserData>(); List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findUId = item.AccountInclude.Split(',').ToList(); if (item.SelectAccount == "1") // 找 AD Data { mdsAdUserDatas = _appListService.GetMdsAdUser(findUId); } else // 找 HR Data { mdsHrEmpData = _appListService.GetHrEmpByUId(findUId); } List <WisAppUserList> findAppUser = mdsAdUserDatas.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); List <WisAppUserList> findAppUserByHr = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); wisAppUserList.AddRange(findAppUserByHr); } } #endregion bool inserted = _appListService.InsertAppName(wisApp, wisAppUserList); if (inserted) { return(TResult <ResponseAppNameCreate> .OK(new ResponseAppNameCreate { IsSuccessful = true, AppID = appID }, appNameCreate.AppName)); } else { return(TResult <ResponseAppNameCreate> .Fail(new ResponseAppNameCreate { IsSuccessful = false, AppID = "" }, FaultInfoRcConstants.ERR_CODE_FAIL, "Insert App name fail!")); } }
/// <summary> /// 更新 Wis App name /// </summary> /// <param name="appNameCreate"></param> /// <returns></returns> public TResult <bool> ModifyAppName(AppNameCreate appNameCreate) { List <WisAppUserList> wisAppUserList = new List <WisAppUserList>(); //撈出置頂總合資料 List <InSideOrOutSideApp> inSideOrOutSideApps = _appListService.GetIsTopAppList(); #region Check 置頂 //如果要頂置 需檢查頂置規則 企業APP 2筆 外部 App 2筆 var result = IsTopCalculateHelper.IsOverTopQuantity(appNameCreate, inSideOrOutSideApps, false); if (!result.isCheckTop) { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, result.errorMessage)); } #endregion //DTO WisAppList wisApp = _mapper.Map <AppNameCreate, WisAppList>(appNameCreate); DateTime date = DateTime.Now; wisApp.LastUpdateUser = "******"; wisApp.LastUpdateDT = date; #region 授權群組 設定 AppOen 1:開放,0:有授權名單 if (!string.IsNullOrEmpty(wisApp.AppUserGroup) && wisApp.AppOpen == false) { List <string> groupID = wisApp.AppUserGroup?.Split(',').ToList(); List <WisDefineGroup> wisDefineGroups = _appListService.GetDefineGroup(groupID); foreach (var item in wisDefineGroups) { //新增群組 if (!string.IsNullOrEmpty(item.GroupInclude)) { List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findGroup = item.GroupInclude.Split(',').ToList(); if (item.SelectGroup == "1") // 找Site { mdsHrEmpData.AddRange(_appListService.GetHrEmpByLocation(findGroup)); } else // 找 DeptID { mdsHrEmpData.AddRange(_appListService.GetHrEmpByDept(findGroup)); } List <WisAppUserList> findAppUser = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); } //新增 自定義的user if (!string.IsNullOrEmpty(item.AccountInclude)) { List <MdsAdUserData> mdsAdUserDatas = new List <MdsAdUserData>(); List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findUId = item.AccountInclude.Split(',').ToList(); if (item.SelectAccount == "1") // 找 AD Data { mdsAdUserDatas = _appListService.GetMdsAdUser(findUId); } else // 找 HR Data { mdsHrEmpData = _appListService.GetHrEmpByUId(findUId); } List <WisAppUserList> findAppUser = mdsAdUserDatas.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); List <WisAppUserList> findAppUserByHr = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); wisAppUserList.AddRange(findAppUserByHr); } } } #endregion bool isModified = _appListService.ModifyAppName(wisApp, wisAppUserList); if (isModified) { return(TResult <bool> .OK(true, appNameCreate.AppName)); } else { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "Modify App name fail!")); } }
public void SetUp() { #region Initial fake data of constructor _configContext = new ConfigContext { McpDb = "Data Source=10.37.36.195;Initial Catalog=MCPDev;uid=gary;pwd=Unsoul418!;", UploadPath = "C:/AppOs", ImageEndPoint = "http://*****:*****@gmail.com", Category = "wistron_app", DescriptionCh = "Test", DescriptionEn = "Test", AppOpen = true, AppUserGroup = "", AppUserGroupName = "" }; _inSideOrOutSideApp = new List <InSideOrOutSideApp> { new InSideOrOutSideApp { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc1", AppName = "Test AppName1", CompanyApp = "Inside App", IsTopCount = 1 }, new InSideOrOutSideApp { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc2", AppName = "Test AppName2", CompanyApp = "Inside App", IsTopCount = 1 }, new InSideOrOutSideApp { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc3", AppName = "Test AppName3", CompanyApp = "Outside App", IsTopCount = 1 }, new InSideOrOutSideApp { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc4", AppName = "Test AppName4", CompanyApp = "Outside App", IsTopCount = 1 }, }; _wisApp = new WisAppList { AppName = "Test AppName", AppNameEn = "Test AppName", Development = "MCP Developer", Email = "*****@*****.**", Category = "wistron_app", DescriptionCh = "Test", DescriptionEn = "Test", AppUserGroup = "1,2" }; _wisDefineGroups = new List <WisDefineGroup> { new WisDefineGroup { GroupID = "1", GroupName = "ePaper", SelectGroup = "1", GroupInclude = "", SelectAccount = "2", AccountInclude = "9012016,9303064" }, new WisDefineGroup { GroupID = "2", GroupName = "WistronArk", SelectGroup = "1", GroupInclude = "8177818", SelectAccount = "1", AccountInclude = "10610056,10704054" } }; #endregion //fake service _appListService = Substitute.For <IAppListService>(); _uploadFileService = Substitute.For <IUploadFileService>(); _authService = Substitute.For <IAuthService>(); _targetObj = new AppBiz(_configContext, _appListService, _uploadFileService, _mapper, _authService); }
/// <summary> /// 更新 Wis App name /// </summary> /// <param name="appNameCreate"></param> /// <returns></returns> public TResult <bool> ModifyAppName(AppNameCreate appNameCreate) { List <WisAppUserList> wisAppUserList = new List <WisAppUserList>(); //撈出置頂總合資料 List <InSideOrOutSideApp> inSideOrOutSideApps = _appListService.GetIsTopAppList(); #region Check 置頂 //如果要頂置 需檢查頂置規則 企業APP 2筆 外部 App 2筆 if (appNameCreate.IsTop) { //企業專用 true:企業APP , false:外部APP if (appNameCreate.CompanyApp) { //內部 app得要排除 自己的部分 int inSideTop = inSideOrOutSideApps.Where(p => p.CompanyApp.Equals("Inside App") && p.AppID != appNameCreate.AppID).Count(); if (inSideTop >= 2) { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "企業內部 App 置頂最多為2筆")); } } else { //外部 app 得要排除 自己的部分 int outSideTop = inSideOrOutSideApps.Where(p => p.CompanyApp.Equals("Outside App") && p.AppID != appNameCreate.AppID).Count(); if (outSideTop >= 2) { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "外部 App 置頂最多為2筆")); } } } #endregion //DTO WisAppList wisApp = _mapper.Map <AppNameCreate, WisAppList>(appNameCreate); DateTime date = DateTime.Now; wisApp.LastUpdateUser = "******"; wisApp.LastUpdateDT = date; #region 授權群組 設定 AppOen 1:開放,0:有授權名單 List <string> groupID = wisApp.AppUserGroup?.Split(',').ToList(); List <WisDefineGroup> wisDefineGroups = _appListService.GetDefineGroup(groupID); foreach (var item in wisDefineGroups) { //新增群組 if (!string.IsNullOrEmpty(item.GroupInclude)) { List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findGroup = item.GroupInclude.Split(',').ToList(); if (item.SelectGroup == "1") // 找Site { mdsHrEmpData = _appListService.GetHrEmpByLocation(findGroup); } else // 找 DeptID { mdsHrEmpData = _appListService.GetHrEmpByDept(findGroup); } List <WisAppUserList> findAppUser = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); } //新增 自定義的user if (!string.IsNullOrEmpty(item.AccountInclude)) { List <MdsAdUserData> mdsAdUserDatas = new List <MdsAdUserData>(); List <MdsHrEmpData> mdsHrEmpData = new List <MdsHrEmpData>(); List <string> findUId = item.AccountInclude.Split(',').ToList(); if (item.SelectAccount == "1") // 找 AD Data { mdsAdUserDatas = _appListService.GetMdsAdUser(findUId); } else // 找 HR Data { mdsHrEmpData = _appListService.GetHrEmpByUId(findUId); } List <WisAppUserList> findAppUser = mdsAdUserDatas.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); List <WisAppUserList> findAppUserByHr = mdsHrEmpData.Select(p => new WisAppUserList { AppID = appNameCreate.AppID, UserID = p.Uid }).ToList(); wisAppUserList.AddRange(findAppUser); wisAppUserList.AddRange(findAppUserByHr); } } #endregion bool isModified = _appListService.ModifyAppName(wisApp, wisAppUserList); if (isModified) { return(TResult <bool> .OK(true, appNameCreate.AppName)); } else { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "Modify App name fail!")); } }
public IActionResult ModifyApp([FromForm] AppNameCreate request) { TResult <bool> response = _appBiz.ModifyAppName(request); return(Json(response)); }
public IActionResult CreateApp([FromForm] AppNameCreate request) { TResult <ResponseAppNameCreate> response = _appBiz.InsertAppName(request); return(Json(response)); }