Files
BeWoPlaner/Service/ServiceImplementations/DownloadBeWoServiceImp.cs
2022-08-30 09:12:20 +02:00

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;
//}
}
}