using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
using UserManagement.Api.Helpers;
using UserManagement.Data.Dto;
using UserManagement.MediatR.Queries;
namespace UserManagement.API.Controllers.Dashboard
{
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class DashboardController : ControllerBase
{
public IMediator _mediator { get; set; }
public DashboardController(IMediator mediator)
{
_mediator = mediator;
}
///
/// Get Active User Count
///
///
[HttpGet("GetActiveUserCount")]
[ClaimCheck("dashboard_list")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetActiveUserCount()
{
var getUserQuery = new GetActiveUserCountQuery { };
var result = await _mediator.Send(getUserQuery);
return Ok(result);
}
///
/// Get Inactive User Count
///
///
[HttpGet("GetInactiveUserCount")]
[ClaimCheck("dashboard_list")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetInactiveUserCount()
{
var getUserQuery = new GetInactiveUserCountQuery { };
var result = await _mediator.Send(getUserQuery);
return Ok(result);
}
///
/// Get Total user count
///
///
[HttpGet("GetTotalUserCount")]
[ClaimCheck("dashboard_list")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetTotalUserCount()
{
var getUserQuery = new GetTotalUserCountQuery { };
var result = await _mediator.Send(getUserQuery);
return Ok(result);
}
///
/// Gets the online users.
///
///
[HttpGet("GetOnlineUsers")]
[ClaimCheck("online_users_list", "dashboard_list")]
[Produces("application/json", "application/xml", Type = typeof(List))]
public async Task GetOnlineUsers()
{
var query = new GetOnlineUsersQuery { };
var result = await _mediator.Send(query);
return Ok(result);
}
///
/// Gets the daily reminders.
///
/// The month.
/// The year.
///
[HttpGet("dailyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetDailyReminders(int month, int year)
{
var monthlyEventQuery = new GetDailyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the weekly reminders.
///
/// The month.
/// The year.
///
[HttpGet("weeklyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetWeeklyReminders(int month, int year)
{
var monthlyEventQuery = new GetWeeklyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the monthly reminders.
///
/// The month.
/// The year.
///
[HttpGet("monthlyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetMonthlyReminders(int month, int year)
{
var monthlyEventQuery = new GetMonthlyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the quarterly reminders.
///
/// The month.
/// The year.
///
[HttpGet("quarterlyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetQuarterlyReminders(int month, int year)
{
var monthlyEventQuery = new GetQuarterlyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the half yearly reminders.
///
/// The month.
/// The year.
///
[HttpGet("halfyearlyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetHalfYearlyReminders(int month, int year)
{
var monthlyEventQuery = new GetHalfYearlyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the yearly reminders.
///
/// The month.
/// The year.
///
[HttpGet("yearlyreminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetYearlyReminders(int month, int year)
{
var monthlyEventQuery = new GetYearlyReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
///
/// Gets the one time reminder.
///
/// The month.
/// The year.
///
[HttpGet("onetimereminder/{month}/{year}")]
[Produces("application/json", "application/xml", Type = typeof(int))]
public async Task GetOneTimeReminder(int month, int year)
{
var monthlyEventQuery = new GetOneTimeReminderQuery { Month = month, Year = year };
var result = await _mediator.Send(monthlyEventQuery);
return Ok(result);
}
}
}