private Result <LogBook> GetLogBook() { try { if (File.Exists(fileName)) { string json = File.ReadAllText(fileName); LogBookData result = JsonConvert.DeserializeObject <LogBookData>(json); return(Results.Success(LogBookMapper.SafeMap(result))); } return(Results.Success(LogBookMapper.SafeMap(null))); } catch (Exception e) { return(Results.Failure <LogBook>($"Failed to read daily sheets from disk: {e}.")); } }
private Result <object> SaveLogBook(LogBook logBook) { try { if (!Directory.GetParent(fileName).Exists) { Directory.GetParent(fileName).Create(); } var data = new LogBookData { // save only for 2 latest months Days = logBook.Days.OrderByDescending(l => l.DayStarted) .Take(61).Select(d => DayMapper.Map(d)).ToList(), Stash = logBook.Stash }; string json = JsonConvert.SerializeObject(data); File.WriteAllText(fileName, json); return(Results.SuccessfulUnit); } catch (Exception e) { return(Results.Failure <object>($"Failed to save sheets: {e.Message}")); } }
public static LogBook SafeMap(LogBookData data) { return(new LogBook( data?.Days?.Select(d => DayMapper.Map(d)).ToList() ?? new List <Day>(), data?.Stash ?? TimeSpan.Zero)); }