188 lines
6.4 KiB
C#
188 lines
6.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
using System.ServiceModel;
|
|
using System.Xml;
|
|
using BeWo.Data;
|
|
using BeWo.Service.ServiceContracts;
|
|
using BeWo.Service.ServiceUtils.Paths;
|
|
using BeWo.Service.ServiceUtils.Update;
|
|
using BS.SharedLauncher.DataContract;
|
|
using BS.SharedLauncher.Enums;
|
|
using BS.SharedLauncher.Extensions;
|
|
using BS.SharedLauncher.Logic;
|
|
using BS.SharedLauncher.Update;
|
|
|
|
namespace BeWo.Service.ServiceImplementations
|
|
{
|
|
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
|
|
public class DownloadBeWoServiceImp : IDownloadBeWoService
|
|
{
|
|
public string Tenant => MultitenancyOperationContextExt.Current.Tenant;
|
|
|
|
public DownloadPlanerResponseDC Download2(DownloadPlanerRequestDC request)
|
|
{
|
|
DownloadPlanerResponseBuilder builder = new DownloadPlanerResponseBuilder(request);
|
|
|
|
builder.Calculate(Tenant);
|
|
|
|
if (!request.ApplyFolderIsEmpty)
|
|
if (request.ApplyPackage is object)
|
|
builder.Substract(request.ApplyPackage.ToPlanerPackageInfo());
|
|
|
|
if (!request.DownloadFolderIsEmpty)
|
|
if (request.DownloadedPackages is object)
|
|
builder.AnalyseDownload(request.DownloadedPackages.ToDictionary(pair => pair.Key, pair => pair.Value.ToPlanerPackageInfo()));
|
|
|
|
return builder.CreateResponse();
|
|
}
|
|
|
|
public DownloadPlanerResponseDC Download2_(DownloadPlanerRequestDC request)
|
|
{
|
|
try
|
|
{
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw Core.Utils.CreateBeWoFaultException(e);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
//private DownloadPlanerResponseDC Install(PlanerPackageInfo root)
|
|
//{
|
|
// //PlanerPackageFactory.ConstructResponse(root, Tenant, out DownloadPlanerResponseDC response);
|
|
|
|
// //response.DownloadFilesToKeep = response.CurrentApplicationPackageInfo.Files;
|
|
|
|
// return response;
|
|
//}
|
|
|
|
//private DownloadPlanerResponseDC Update(PlanerPackageInfo newestVersion, string versionxml)
|
|
//{
|
|
// return null;
|
|
//}
|
|
|
|
//public BeWoProgramPackageDC Update(BeWoProgramPackageDC current)
|
|
//{
|
|
// try
|
|
// {
|
|
// DirectoryInfo dirUpdateRoot = new DirectoryInfo(ConfigurationManager.AppSettings.Get("UpdateRootPath"));
|
|
|
|
// var newest = GetNewestVersionSet(dirUpdateRoot, MultitenancyOperationContextExt.Current.Tenant);
|
|
|
|
// var res = CreateUpdatePackage(current, newest);
|
|
|
|
// res.toLoad = "BeWoPlaner.dll";
|
|
|
|
// return res;
|
|
// }
|
|
// catch (Exception e)
|
|
// {
|
|
// throw Core.Utils.CreateBeWoFaultException(e);
|
|
// }
|
|
//}
|
|
//private BeWoProgramPackageDC GetNewestVersionSet(DirectoryInfo dirUpdateRoot, string tenant)
|
|
//{
|
|
// var res = new BeWoProgramPackageDC();
|
|
// var dirTenant = dirUpdateRoot.GetDirectories().FirstOrDefault(dict => dict.Name == tenant);
|
|
|
|
// var filesRoot = dirUpdateRoot.GetFiles().Select(file => new BeWoProgramFileDC(file));
|
|
|
|
// if (dirUpdateRoot is null)
|
|
// throw new Exception("Couldn't find update root path for launcher updates");
|
|
|
|
// res.Files.AddRange(filesRoot);
|
|
|
|
// if (dirTenant is null)
|
|
// return res;
|
|
|
|
// foreach (var newFile in dirTenant.GetFiles().Select(file => new BeWoProgramFileDC(file)))
|
|
// {
|
|
// var search = res.Files.FirstOrDefault(x => x.FileName == newFile.FileName);
|
|
|
|
// if (search is null)
|
|
// {
|
|
// res.Files.Add(newFile);
|
|
// }
|
|
// else
|
|
// {
|
|
// res.Files.Remove(search);
|
|
// res.Files.Add(newFile);
|
|
// }
|
|
// }
|
|
|
|
// return res;
|
|
//}
|
|
//private BeWoProgramPackageDC CreateUpdatePackage(BeWoProgramPackageDC oldSet, BeWoProgramPackageDC newSet)
|
|
//{
|
|
// var res = new BeWoProgramPackageDC();
|
|
|
|
// if (!(oldSet is null))
|
|
// res.Files.AddRange(oldSet.Files);
|
|
|
|
// foreach (var newFile in newSet.Files)
|
|
// {
|
|
|
|
// var oldFile = res.Files.FirstOrDefault(x => x.FileName == newFile.FileName);
|
|
|
|
// if (oldFile is null)
|
|
// {
|
|
// newFile.FileData = File.ReadAllBytes(newFile.FullPath);
|
|
// newFile.ToDo = FileToDo.Add;
|
|
|
|
// res.Files.Add(newFile);
|
|
// }
|
|
// else
|
|
// {
|
|
// if (oldFile.FileVersion is null || newFile.FileVersion is null)
|
|
// {
|
|
// oldFile.FileVersion = newFile.FileVersion;
|
|
// oldFile.FileData = File.ReadAllBytes(newFile.FullPath);
|
|
// oldFile.ToDo = FileToDo.Update;
|
|
// }
|
|
// else
|
|
// {
|
|
// if (oldFile.FileVersion == newFile.FileVersion)
|
|
// {
|
|
// if (oldFile.Checksum != newFile.Checksum)
|
|
// {
|
|
// oldFile.FileData = File.ReadAllBytes(newFile.FullPath);
|
|
// oldFile.ToDo = FileToDo.Update;
|
|
// }
|
|
// else
|
|
// {
|
|
// oldFile.ToDo = FileToDo.Nuthing;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// oldFile.FileVersion = newFile.FileVersion;
|
|
// oldFile.FileData = File.ReadAllBytes(newFile.FullPath);
|
|
// oldFile.ToDo = FileToDo.Update;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// foreach (var oldFile in oldSet.Files)
|
|
// {
|
|
// var newFile = newSet.Files.FirstOrDefault(x => x.FileName == oldFile.FileName);
|
|
|
|
// if (newFile is default(BeWoProgramFileDC))
|
|
// {
|
|
// oldFile.ToDo = FileToDo.Remove;
|
|
// }
|
|
// }
|
|
|
|
// return res;
|
|
//}
|
|
}
|
|
} |