/**
 * Copyright (c) 2008-2023, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
 * This work is provided under a BSD open-source license, see project license.html and license.txt
 */
package MV3500Cohort2023MarchJune.projects.Islas;

import simkit.SimEntityBase;
import simkit.random.RandomVariate;
import simkit.random.RandomVariateFactory;

/** Model */
public class Customer extends SimEntityBase{
    
    private RandomVariate beefPreference;
    private RandomVariate porkPreference;
    private RandomVariate chickenPreference;
    private RandomVariate eggsPreference; 

    /** Constructor
     * @param averagePurchaseOfBeef initialization value
     * @param beefPlusMinus initialization value
     * @param averagePurchaseOfPork initialization value
     * @param porkPlusMinus initialization value
     * @param averagePurchaseOfChicken initialization value
     * @param chickenPlusMinus initialization value
     * @param averagePurchaseOfEggs initialization value
     * @param eggsPlusMinus initialization value */
    public Customer(double averagePurchaseOfBeef, double beefPlusMinus, double averagePurchaseOfPork, double porkPlusMinus, double averagePurchaseOfChicken, double chickenPlusMinus, double averagePurchaseOfEggs, double eggsPlusMinus) {
        this.beefPreference = RandomVariateFactory.getInstance("Normal", averagePurchaseOfBeef, beefPlusMinus);
        this.porkPreference = RandomVariateFactory.getInstance("Normal", averagePurchaseOfPork, porkPlusMinus);
        this.chickenPreference = RandomVariateFactory.getInstance("Normal", averagePurchaseOfChicken, chickenPlusMinus);
        this.eggsPreference = RandomVariateFactory.getInstance("Normal", averagePurchaseOfEggs, eggsPlusMinus);
    }

    /** commence simulation run */
    public void doRun() {
        waitDelay("Transaction", 0.0);
    }

    /** perform transaction */
    public void doTransaction() {
        double beef = beefPreference.generate();
        beef = beef < 0 ? 0 : beef;

        double pork = porkPreference.generate();
        pork = pork < 0 ? 0 : pork;

        double chicken = chickenPreference.generate();
        chicken = chicken < 0 ? 0 : chicken;

        double eggs = eggsPreference.generate();
        eggs = eggs < 0 ? 0 : eggs;

        waitDelay("Transaction", 0.0, beef, pork, chicken, eggs);
        waitDelay("Transaction", 7.0);
    }

    /** accessor
     * @return preference RandomVariate */
    public RandomVariate getBeefPreference() {
        return beefPreference;
    }

    /** accessor
     * @return preference RandomVariate */
    public RandomVariate getPorkPreference() {
        return porkPreference;
    }

    /** accessor
     * @return preference RandomVariate */
    public RandomVariate getChickenPreference() {
        return chickenPreference;
    }

    /** accessor
     * @return preference RandomVariate */
    public RandomVariate getEggsPreference() {
        return eggsPreference;
    }

    
}