Files
StructureHelper/DataAccess/Infrastructures/SaveProjectToFileLogic.cs
2024-11-09 21:52:05 +05:00

62 lines
2.0 KiB
C#

using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Projects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataAccess.Infrastructures
{
public class SaveProjectToFileLogic : ISaveProjectToFileLogic
{
private IGetRootObjectByProjectLogic getRootObjectLogic;
private IGetJsonDataByRootObjectLogic getJsonDataLogic;
public SaveProjectToFileLogic(
IGetRootObjectByProjectLogic getRootObjectLogic,
IGetJsonDataByRootObjectLogic getJsonDataLogic,
IShiftTraceLogger traceLogger)
{
this.getRootObjectLogic = getRootObjectLogic;
this.getJsonDataLogic = getJsonDataLogic;
TraceLogger = traceLogger;
}
public SaveProjectToFileLogic(IShiftTraceLogger traceLogger) : this (
new GetRootObjectByProjectLogic(traceLogger),
new GetJsonDataByRootObjectLogic(traceLogger),
traceLogger
)
{
}
public IProject Project { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public void SaveProject()
{
getRootObjectLogic.Project = Project;
var rootObject = getRootObjectLogic.GetRootObject();
getJsonDataLogic.RootObject = rootObject;
var jsonData = getJsonDataLogic.GetJsonData();
SaveStringToFile(jsonData);
}
private void SaveStringToFile(string jsonData)
{
try
{
File.Delete(Project.FullFileName);
File.WriteAllText(Project.FullFileName, jsonData);
TraceLogger?.AddMessage($"File {Project.FullFileName} was saved successfully", TraceLogStatuses.Service);
}
catch (Exception ex)
{
TraceLogger?.AddMessage(ex.Message, TraceLogStatuses.Error);
}
}
}
}