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);
        }
Example #2
0
        /// <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!"));
                }
            }
        }