﻿using System.Collections.Generic;

namespace AppsheetEpplus;

/// <summary>
/// Simple implementation of TimeValue function, just using .NET built-in
/// function System.DateTime.TryParse, based on current culture
/// </summary>
public class TimeValue : ExcelFunction {
  public override CompileResult Execute(
      IEnumerable<FunctionArgument> arguments,
      ParsingContext context) {
    ValidateArguments(arguments, 1);
    var dateString = ArgToString(arguments, 0);
    return Execute(dateString);
  }

  internal CompileResult Execute(string dateString) {
    System.DateTime.TryParse(dateString, out var result);
    return result != System.DateTime.MinValue
        ? CreateResult(GetTimeValue(result), DataType.Date)
        : CreateResult(ExcelErrorValue.Create(eErrorType.Value), DataType.ExcelError);
  }

  private double GetTimeValue(System.DateTime result) {
    return (int)result.TimeOfDay.TotalSeconds == 0
        ? 0d
        : result.TimeOfDay.TotalSeconds / (3600 * 24);
  }
}
