20#ifndef KPTEFFORTCOST_H
21#define KPTEFFORTCOST_H
23#include <tqdatetime.h>
26#include "kptduration.h"
37 : m_effort(Duration::zeroDuration),
40 EffortCost( const Duration &effort, const double cost)
48 Duration effort() const { return m_effort; }
49 double cost() const { return m_cost; }
50 void setCost( double cost) { m_cost = cost; }
51 void add( const Duration &effort, const double cost) {
55 EffortCost &operator+=( const EffortCost &ec) {
56 add(ec.effort(), ec.cost());
63typedef TQMap<TQDate, EffortCost> EffortCostDayMap;
76 EffortCost effortCost( const TQDate &date) const {
78 if (!date.isValid()) {
79 kdError()<<k_funcinfo<< "Date not valid"<<endl;
82 EffortCostDayMap::const_iterator it = m_days.find(date);
83 if (it != m_days.end())
87 void insert( const TQDate &date, const Duration &effort, const double cost) {
88 if (!date.isValid()) {
89 kdError()<<k_funcinfo<< "Date not valid"<<endl;
92 m_days.insert(date, EffortCost(effort, cost));
98 EffortCost &add( const TQDate &date, const Duration &effort, const double cost) {
99 return add(date, EffortCost(effort, cost));
105 EffortCost &add( const TQDate &date, const EffortCost &ec) {
106 if (!date.isValid()) {
107 kdError()<<k_funcinfo<< "Date not valid"<<endl;
111 return m_days[date] += ec;
114 bool isEmpty() const {
115 return m_days.isEmpty();
118 EffortCostDayMap days() const { return m_days; }
120 EffortCostMap &operator+=( const EffortCostMap &ec) {
129 EffortCostDayMap::const_iterator it;
130 for(it = ec.days().constBegin(); it != ec.days().constEnd(); ++it) {
131 add(it.key(), it.data());
135 EffortCost &effortCostOnDate( const TQDate &date) {
139 double cost( const TQDate &date, int num=7) {
141 for ( int i=0; i < num; ++i) {
142 r += costOnDate(date.addDays(i));
146 double costOnDate( const TQDate &date) const {
147 if (!date.isValid()) {
148 kdError()<<k_funcinfo<< "Date not valid"<<endl;
151 if (m_days.contains(date)) {
152 return m_days[date].cost();
156 Duration effortOnDate( const TQDate &date) const {
157 if (!date.isValid()) {
158 kdError()<<k_funcinfo<< "Date not valid"<<endl;
161 if (m_days.contains(date)) {
162 return m_days[date].effort();
166 double totalCost() const {
168 EffortCostDayMap::const_iterator it;
169 for(it = m_days.constBegin(); it != m_days.constEnd(); ++it) {
170 cost += it.data().cost();
174 Duration totalEffort() const {
176 EffortCostDayMap::const_iterator it;
177 for(it = m_days.constBegin(); it != m_days.constEnd(); ++it) {
178 eff += it.data().effort();
184 EffortCost &zero() { return m_zero; }
188 EffortCostDayMap m_days;
static const Duration zeroDuration This is useful for occasions where we need a zero duration.
|