/*
 * Copyright (C) 2016/2022 Litote
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.litote.kmongo.issue

import org.litote.kmongo.Data
import java.math.BigDecimal
import java.time.LocalDate
import java.time.Month
import java.time.Year

/**
 *
 */
interface RecordCollection1 {
    val _id                 : Long
    val year                : Year
    val month               : Month
    val records             : List<Record1>
}

interface Record1 {
    val date                : LocalDate
    val type                : String
    val hoursSubmitted      : BigDecimal
    val desc                : String?
    val report              : RecordCollection1
}

interface Employee1 {
    val _id                 : Long
    val records             : List<RecordCollection1>
}

@Data
data class RecordCollectionImpl1(
    override val _id                 : Long,
    override val year                : Year,
    override val month               : Month
) : RecordCollection1 {
    override lateinit var records: List<Record1>
}

@Data
data class EmployeeAggregate1(override val _id: Long): Employee1 {
    override lateinit var records    : List<RecordCollection1>
}