Я пытаюсь что-то здесь подсчитать.Поэтому я в основном собираю все профили с их проектами и стремимся к ставкам и таймерам отношений загрузки для этих проектов.Каждый проект имеет одну ставку и имеет значение, и у каждого проекта может быть несколько таймеров.
Что я хочу сделать, так это для каждого проекта вычислить разницу между start_at и stop_at для таймеров и получить ее каксумма в часах, умножьте ее на значение ставки для того же проекта, а затем верните все как сумму.По сути, я хочу получить общую сумму, которую заработал человек (для каждого проекта все длительности таймеров в часах * значение ставки).
В настоящее время я пытаюсь рассчитать все это в javascript, и это то, что я до сих пор:
calculateTotalAmountEarned(projects) {
let totalAmount = 0;
let totalHours = 0;
let total = moment.duration(0);
let value = 0;
projects.forEach((project) => {
project.timers.forEach((timer) => {
if(timer.stopped_at) {
let started = moment(timer.started_at);
let stopped = moment(timer.stopped_at);
let time = moment.duration(stopped.diff(started));
total.add(time)
}
totalHours = +(total.asHours()).toFixed(0);
})
project.bids.forEach((bid) => {
value = bid.value
})
totalAmount = totalHours * value
})
return totalAmount
},
хорошо, сейчас он возвращает сумму всех таймеров для всех проектов, умноженную на стоимость одной ставки для одного проекта.
, что я сейчас получаю:55 часов - это длительность всех таймеров всех проектов для профиля, умноженная на 14, что является значением единой ставки.
пример ввода и ожидаемого результата: проект 1: 3 таймера каждый с длительностью1 час -> сумма 3 часа, стоимость предложения 14, проект 2 такой же, как проект 1 и т. Д.
ожидаемый результат (проект 1 = 3 * 14) + (проект 2 => 3 * 14) и т. Д.для всех проектов
"projects":[
{
"id":1,
"timers":[
{
"id":1,
"name":"dfdsf",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-23 11:48:22",
"stopped_at":"2018-05-23 11:48:25",
"created_at":"2018-05-23 11:48:22",
"updated_at":"2018-05-23 11:48:25",
},
{
"id":2,
"name":"dfdsf343",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-23 11:48:28",
"stopped_at":"2018-05-23 11:48:30",
"created_at":"2018-05-23 11:48:28",
"updated_at":"2018-05-23 11:48:30",
},
{
"id":3,
"name":"dfdsf343zzxccz",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-23 11:48:33",
"stopped_at":"2018-05-23 11:48:35",
"created_at":"2018-05-23 11:48:33",
"updated_at":"2018-05-23 11:48:35",
},
{
"id":4,
"name":"dfdsf343zzxcczfgfg",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-23 11:48:37",
"stopped_at":"2018-05-23 11:48:40",
"created_at":"2018-05-23 11:48:37",
"updated_at":"2018-05-23 11:48:40",
},
{
"id":5,
"name":"asdfsadf",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-24 10:44:51",
"stopped_at":"2018-05-24 11:12:55",
"created_at":"2018-05-24 10:44:51",
"updated_at":"2018-05-24 11:12:55",
},
{
"id":7,
"name":"twqetqwtq",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-24 11:13:45",
"stopped_at":"2018-05-24 12:08:22",
"created_at":"2018-05-24 11:13:45",
"updated_at":"2018-05-24 12:08:22",
},
{
"id":9,
"name":"asd",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-24 12:08:29",
"stopped_at":"2018-05-24 12:42:13",
"created_at":"2018-05-24 12:08:29",
"updated_at":"2018-05-24 12:42:13",
},
{
"id":11,
"name":"1234",
"project_id":1,
"profile_id":2,
"started_at":"2018-05-24 13:23:34",
"stopped_at":"2018-05-26 08:30:41",
"created_at":"2018-05-24 13:23:34",
"updated_at":"2018-05-26 08:30:41",
}
],
"bids":[
{
"id":1,
"value":"34",
"created_at":"2018-05-22 12:25:37",
"updated_at":"2018-05-22 12:25:55"
}
],
Хорошо, так что это актуальная информация для одного проекта - его таймеры и ставки - всегда есть одна заявка.ожидаемый результат - это разница между значениями Stop_at и Start_at в часах для каждого таймера, который суммируется и умножается на значение ставок.Это повторялось для каждого другого проекта, и все это подводилось к окончательному результату.Я надеюсь, вы поняли мое объяснение