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); } } }