80 lines
2.5 KiB
C#
80 lines
2.5 KiB
C#
using DataAccess.DTOs;
|
|
using DataAccess.DTOs.DTOEntities;
|
|
using DataAccess.JsonConverters;
|
|
using Newtonsoft.Json;
|
|
using StructureHelperCommon.Infrastructures.Interfaces;
|
|
using StructureHelperCommon.Infrastructures.Settings;
|
|
using StructureHelperCommon.Models;
|
|
using StructureHelperCommon.Models.Projects;
|
|
using StructureHelperCommon.Services.FileServices;
|
|
|
|
namespace DataAccess.Infrastructures
|
|
{
|
|
public class FileSaveLogic : IFileSaveLogic
|
|
{
|
|
public IShiftTraceLogger? TraceLogger { get; set; }
|
|
|
|
public SaveFileResult SaveFile(IProject project)
|
|
{
|
|
SaveFileResult result = new();
|
|
if (project.FullFileName == string.Empty || project.FullFileName == "")
|
|
{
|
|
var selectResult = SelectFileName(project);
|
|
if (selectResult.IsValid == false)
|
|
{
|
|
TraceLogger?.AddMessage(selectResult.Description);
|
|
result.IsValid = false;
|
|
return result;
|
|
}
|
|
project.FullFileName = selectResult.FileName;
|
|
}
|
|
result.FileName = project.FullFileName;
|
|
try
|
|
{
|
|
SaveToFile(project);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result.IsValid = false;
|
|
result.Description += ex.Message;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private SaveFileResult SelectFileName(IProject project)
|
|
{
|
|
FileDialogSaver saver = new();
|
|
saver.InputData = new SaveDialogInputData()
|
|
{
|
|
FilterString = "StructureHelper project file (*.shpj)|*.shpj|All Files (*.*)|*.*",
|
|
InitialDirectory = project.FullFileName,
|
|
};
|
|
saver.TraceLogger = TraceLogger;
|
|
var saveResult = saver.SaveFile();
|
|
return saveResult;
|
|
}
|
|
|
|
private void SaveToFile(IProject project)
|
|
{
|
|
ISaveProjectToFileLogic saveProjectLogic = new SaveProjectToFileLogic(TraceLogger)
|
|
{
|
|
Project = project
|
|
};
|
|
saveProjectLogic.SaveProject();
|
|
}
|
|
|
|
|
|
public SaveFileResult SaveFileAs(IProject project)
|
|
{
|
|
var tmpFullFileName = project.FullFileName;
|
|
project.FullFileName = string.Empty;
|
|
var result = SaveFile(project);
|
|
if (result.IsValid == false)
|
|
{
|
|
project.FullFileName = tmpFullFileName;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|