package controllers import javax.inject._ import play.api._ import play.api.mvc._ import models.{Daily, User} import scala.concurrent.TimeoutException import scala.concurrent.duration._ import org.bson.types.ObjectId /** * This controller handles all the Daily endpoints. */ @Singleton class DailyController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { /** * Create an Action to fetch all the Dailies in the DB. */ def getAll() = Action { implicit request: Request[AnyContent] => println("DailyController:getAll") try { val result: Seq[Daily] = Daily.getAllDailiesAsync() val jsonResult = Daily.toJson(result) Ok(jsonResult) } catch { case ex: TimeoutException => BadRequest("Request timed out") case ex: Throwable => BadRequest("Exception raised") } } /** * Create an Action to fetch the user's Dailies in the DB. */ def getUserDailies() = Action { implicit request: Request[AnyContent] => println("DailyController:getUserDailies") try { val result: Seq[Daily] = Daily.getUserDailiesAsync(new ObjectId("641128f7e80bcd1ba39d04af")) val jsonResult = Daily.toJson(result) Ok(jsonResult) } catch { case ex: TimeoutException => BadRequest("Request timed out") case ex: Throwable => BadRequest("Exception raised") } } /** * Create an Action to fetch the user's Feed. */ def getUserFeed() = Action { implicit request: Request[AnyContent] => println("DailyController:getUserFeed") try { val result: Seq[Daily] = Daily.getUserFeedAsync(new ObjectId("641128f7e80bcd1ba39d04ae")) val jsonResult = Daily.toJson(result) Ok(jsonResult) } catch { case ex: TimeoutException => BadRequest("Request timed out") case ex: Throwable => BadRequest("Exception raised") } } def create() = Action { implicit request: Request[AnyContent] => println("DailyController:create") try { // Dummy data val result = Daily.createDailyAsync(None, new ObjectId("641128f7e80bcd1ba39d04ae"), new ObjectId("641128f7e80bcd1ba39d04ae"), "asddas") val jsonResult = Daily.toJson(result) Ok(jsonResult) } catch { case ex: TimeoutException => BadRequest("Request timed out") case ex: Throwable => BadRequest("Exception raised") } } }