internal static WorkingHoursSumDailyApiModel DeserializeWorkingHoursSumDailyApiModel(XElement element)
 {
     string employeeName = default;
     bool? hasEntries = default;
     int? totalDays = default;
     double? totalHours = default;
     string totalHoursAndDaysFormatted = default;
     string totalHoursMinutesAndDaysFormatted = default;
     int? totalUnclosedEntries = default;
     string totalWorkedHoursAndMinutesShortFormatted = default;
     long? userId = default;
     IReadOnlyList<WorkingHoursReportEntryApiModel> entries = default;
     if (element.Element("employeeName") is XElement employeeNameElement)
     {
         employeeName = (string)employeeNameElement;
     }
     if (element.Element("hasEntries") is XElement hasEntriesElement)
     {
         hasEntries = (bool?)hasEntriesElement;
     }
     if (element.Element("totalDays") is XElement totalDaysElement)
     {
         totalDays = (int?)totalDaysElement;
     }
     if (element.Element("totalHours") is XElement totalHoursElement)
     {
         totalHours = (double?)totalHoursElement;
     }
     if (element.Element("totalHoursAndDaysFormatted") is XElement totalHoursAndDaysFormattedElement)
     {
         totalHoursAndDaysFormatted = (string)totalHoursAndDaysFormattedElement;
     }
     if (element.Element("totalHoursMinutesAndDaysFormatted") is XElement totalHoursMinutesAndDaysFormattedElement)
     {
         totalHoursMinutesAndDaysFormatted = (string)totalHoursMinutesAndDaysFormattedElement;
     }
     if (element.Element("totalUnclosedEntries") is XElement totalUnclosedEntriesElement)
     {
         totalUnclosedEntries = (int?)totalUnclosedEntriesElement;
     }
     if (element.Element("totalWorkedHoursAndMinutesShortFormatted") is XElement totalWorkedHoursAndMinutesShortFormattedElement)
     {
         totalWorkedHoursAndMinutesShortFormatted = (string)totalWorkedHoursAndMinutesShortFormattedElement;
     }
     if (element.Element("userId") is XElement userIdElement)
     {
         userId = (long?)userIdElement;
     }
     var array = new List<WorkingHoursReportEntryApiModel>();
     foreach (var e in element.Elements("WorkingHoursReportEntryApiModel"))
     {
         array.Add(WorkingHoursReportEntryApiModel.DeserializeWorkingHoursReportEntryApiModel(e));
     }
     entries = array;
     return new WorkingHoursSumDailyApiModel(employeeName, entries, hasEntries, totalDays, totalHours, totalHoursAndDaysFormatted, totalHoursMinutesAndDaysFormatted, totalUnclosedEntries, totalWorkedHoursAndMinutesShortFormatted, userId);
 }
 internal static WorkingHoursSumDailyApiModel DeserializeWorkingHoursSumDailyApiModel(JsonElement element)
 {
     Optional<string> employeeName = default;
     Optional<IReadOnlyList<WorkingHoursReportEntryApiModel>> entries = default;
     Optional<bool> hasEntries = default;
     Optional<int> totalDays = default;
     Optional<double> totalHours = default;
     Optional<string> totalHoursAndDaysFormatted = default;
     Optional<string> totalHoursMinutesAndDaysFormatted = default;
     Optional<int> totalUnclosedEntries = default;
     Optional<string> totalWorkedHoursAndMinutesShortFormatted = default;
     Optional<long> userId = default;
     foreach (var property in element.EnumerateObject())
     {
         if (property.NameEquals("employeeName"))
         {
             employeeName = property.Value.GetString();
             continue;
         }
         if (property.NameEquals("entries"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             List<WorkingHoursReportEntryApiModel> array = new List<WorkingHoursReportEntryApiModel>();
             foreach (var item in property.Value.EnumerateArray())
             {
                 array.Add(WorkingHoursReportEntryApiModel.DeserializeWorkingHoursReportEntryApiModel(item));
             }
             entries = array;
             continue;
         }
         if (property.NameEquals("hasEntries"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             hasEntries = property.Value.GetBoolean();
             continue;
         }
         if (property.NameEquals("totalDays"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             totalDays = property.Value.GetInt32();
             continue;
         }
         if (property.NameEquals("totalHours"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             totalHours = property.Value.GetDouble();
             continue;
         }
         if (property.NameEquals("totalHoursAndDaysFormatted"))
         {
             totalHoursAndDaysFormatted = property.Value.GetString();
             continue;
         }
         if (property.NameEquals("totalHoursMinutesAndDaysFormatted"))
         {
             totalHoursMinutesAndDaysFormatted = property.Value.GetString();
             continue;
         }
         if (property.NameEquals("totalUnclosedEntries"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             totalUnclosedEntries = property.Value.GetInt32();
             continue;
         }
         if (property.NameEquals("totalWorkedHoursAndMinutesShortFormatted"))
         {
             totalWorkedHoursAndMinutesShortFormatted = property.Value.GetString();
             continue;
         }
         if (property.NameEquals("userId"))
         {
             if (property.Value.ValueKind == JsonValueKind.Null)
             {
                 property.ThrowNonNullablePropertyIsNull();
                 continue;
             }
             userId = property.Value.GetInt64();
             continue;
         }
     }
     return new WorkingHoursSumDailyApiModel(employeeName.Value, Optional.ToList(entries), Optional.ToNullable(hasEntries), Optional.ToNullable(totalDays), Optional.ToNullable(totalHours), totalHoursAndDaysFormatted.Value, totalHoursMinutesAndDaysFormatted.Value, Optional.ToNullable(totalUnclosedEntries), totalWorkedHoursAndMinutesShortFormatted.Value, Optional.ToNullable(userId));
 }