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://localhost:53322/app", IosDownloadAddress = "itms-services://?action=download-manifest&url=" }; _appList = new List <AppListItem> { new AppListItem { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc6", AppOSID = "22", Status = true, CompanyApp = true, IsTop = true, AppName = "Test AppName", PackageName = "com.wistron.portalapp.dev", Development = "MCP development", CreateDT = DateTime.Now, OSType = "IOS", Version = "1.0.0", FileName = "Portal 2.0_20201022(Dev 0.2.3).apk", FilePath = "ITSM/IOS/Install/23eb89786e364260ae789d0ec433d724.plist" } }; _appListItem = new AppListItem { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc6", AppOSID = "22", Status = false, CompanyApp = true, IsTop = true, AppName = "Test AppName", PackageName = "com.wistron.portalapp.dev", Development = "MCP development", CreateDT = DateTime.Now, OSType = "IOS", Version = "1.0.0", FileName = "Portal 2.0_20201022(Dev 0.2.3).apk", FilePath = "ITSM/IOS/Install/23eb89786e364260ae789d0ec433d724.plist" }; _alreadyEnabled = new WisAppOs { AppID = "4beedc78-0d31-496e-bb9c-81a79c9c6bc6", AppOSID = 22, OSType = 1 }; //fake service _appListService = Substitute.For <IAppListService>(); _uploadFileService = Substitute.For <IUploadFileService>(); _mapper = Substitute.For <IMapper>(); _authService = Substitute.For <IAuthService>(); #endregion _targetObj = new AppBiz(_configContext, _appListService, _uploadFileService, _mapper, _authService); }
/// <summary> /// 更新 Wis APP os /// </summary> /// <param name="appOsInfo"></param> /// <returns></returns> public TResult <bool> InsertOrModifyAppOs(AppOsInfo appOsInfo) { //短解 應該前端要給預設值 DownloadUrlList.Count = 0 這樣的設定 要不然會throw exception if (appOsInfo.DownloadUrlList == null) { appOsInfo.DownloadUrlList = new List <DownloadUrlList>(); } //CompanyApp = false 欄位版本資訊為空值 補上預設值 原因是外部App 不需要輸入版本號 但是db 欄位為必填 if (string.IsNullOrEmpty(appOsInfo.Version)) { appOsInfo.Version = ""; } DateTime date = DateTime.Now; WisAppOs wisAppOs = _mapper.Map <AppOsInfo, WisAppOs>(appOsInfo); List <WisAppPhoto> wisAppPhoto = _mapper.Map <List <AppPhotoContent>, List <WisAppPhoto> >(appOsInfo.Photo); //視為存在條件 AppID & OsType & Version WisAppOs wisAppOsFromDb = _appListService.AppOsIsExisted(appOsInfo.AppID, appOsInfo.OSType, appOsInfo.Version); //沒有代表是新增 if (wisAppOsFromDb == null) { List <WisAppOsOther> insertWisAppOsOthers = new List <WisAppOsOther>(); wisAppOs.DelFlag = false; wisAppOs.LastUpdateUser = "******"; wisAppOs.CreateDT = date; wisAppOs.LastUpdateDT = date; //多載點功能啟用 才新增 if (appOsInfo.MultipleDownload) { //多載點處理 foreach (DownloadUrlList downloadUrl in appOsInfo.DownloadUrlList) { insertWisAppOsOthers.Add(new WisAppOsOther { AppID = wisAppOs.AppID, AppOsID = 0,//等transaction當中insert Site = downloadUrl.Site, OSType = wisAppOs.OSType, Version = wisAppOs.Version, FileName = appOsInfo.FileName, //IOS 為 ipa路徑 Android 為原始 apk檔案名稱 FilePath = downloadUrl.Url, //IOS 為plist路徑 Android 為apk路徑 LastUpdateUser = "******", LastUpdateDT = date, CreateDT = date }); } } bool isInserted = _appListService.DisableAppOsStatusAndInsertAppOsAndPhotoAndOsOther(wisAppOs, wisAppPhoto, insertWisAppOsOthers); if (isInserted) { //取新增後的 appOsID WisAppOs insertObject = _appListService.GetAppOs(appOsInfo.AppID).FirstOrDefault(p => p.OSType == appOsInfo.OSType && p.Status == AppStatus.EnableBool); return(TResult <bool> .OK(true, insertObject.AppOSID.ToString())); } else { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "Insert App Os fail!")); } } else { //有在DB 找到 代表更新 List <WisAppOsOther> insertWisAppOsOthers = new List <WisAppOsOther>(); wisAppOs.DelFlag = wisAppOsFromDb.DelFlag; wisAppOs.LastUpdateUser = wisAppOsFromDb.LastUpdateUser; wisAppOs.CreateDT = wisAppOsFromDb.CreateDT; wisAppOs.LastUpdateDT = date; //多載點功能啟用 才更新 if (appOsInfo.MultipleDownload) { //多載點 處理 foreach (DownloadUrlList downloadUrl in appOsInfo.DownloadUrlList) { insertWisAppOsOthers.Add(new WisAppOsOther { AppID = wisAppOs.AppID, AppOsID = wisAppOs.AppOSID,//必定會有 AppOsID Site = downloadUrl.Site, OSType = wisAppOs.OSType, Version = wisAppOs.Version, FileName = appOsInfo.FileName, //IOS 為 ipa路徑 Android 為原始 apk檔案名稱 FilePath = downloadUrl.Url, //IOS 為plist路徑 Android 為apk路徑 LastUpdateUser = "******", LastUpdateDT = date, CreateDT = date }); } } bool isUpdated = _appListService.DisableAppOsStatusAndModifyAppOsAndPhotoAndOsOther(wisAppOs, wisAppPhoto, insertWisAppOsOthers); if (isUpdated)//返回 更新 { return(TResult <bool> .OK(true, appOsInfo.AppOSID.ToString())); } else { return(TResult <bool> .Fail(false, FaultInfoRcConstants.ERR_CODE_FAIL, "Update App Os fail!")); } } }