// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/glanceables/classroom/glanceables_classroom_types.h"
#include <optional>
#include <sstream>
#include <string>
#include "base/i18n/time_formatting.h"
#include "base/time/time.h"
#include "url/gurl.h"
namespace ash {
// ----------------------------------------------------------------------------
// GlanceablesClassroomCourse:
GlanceablesClassroomCourse::GlanceablesClassroomCourse(const std::string& id,
const std::string& name)
: id(id), name(name) {}
std::string GlanceablesClassroomCourse::ToString() const {
std::stringstream ss;
ss << "id: " << id << ", name: " << name;
return ss.str();
}
// ----------------------------------------------------------------------------
// GlanceablesClassroomAggregatedSubmissionsState
GlanceablesClassroomAggregatedSubmissionsState::
GlanceablesClassroomAggregatedSubmissionsState(int total_count,
int number_turned_in,
int number_graded)
: total_count(total_count),
number_turned_in(number_turned_in),
number_graded(number_graded) {}
void GlanceablesClassroomAggregatedSubmissionsState::Reset() {
total_count = 0;
number_turned_in = 0;
number_graded = 0;
}
// ----------------------------------------------------------------------------
// GlanceablesClassroomAssignment
GlanceablesClassroomAssignment::GlanceablesClassroomAssignment(
const std::string& course_title,
const std::string& course_work_title,
const GURL& link,
const std::optional<base::Time>& due,
const base::Time& last_update,
std::optional<GlanceablesClassroomAggregatedSubmissionsState>
submissions_state)
: course_title(course_title),
course_work_title(course_work_title),
link(link),
due(due),
last_update(last_update),
submissions_state(std::move(submissions_state)) {}
std::string GlanceablesClassroomAssignment::ToString() const {
std::stringstream ss;
ss << "Course Title: " << course_title
<< ", Course Work Title: " << course_work_title << ", Link: " << link;
if (due.has_value()) {
ss << ", Due: " << base::TimeFormatHTTP(due.value());
}
ss << ", Last Update: " << base::TimeFormatHTTP(last_update);
if (submissions_state.has_value()) {
ss << ", total_submission_count: " << submissions_state->total_count
<< ", number turned in: " << submissions_state->number_turned_in
<< ", number graded:" << submissions_state->number_graded;
}
return ss.str();
}
} // namespace ash