namespace Domain.Services
public class DriverService : IDriverService
public async Task<DriverMessagesResult> GetDriverMessagesAsync(GetDriverMessagesRequest request)
IQueryable<Message> query = _context.Message.AsNoTracking()
int messageCount = await query.CountAsync();
query = query.Skip((request.Pagination.Page -1)* request.Pagination.ItemsPerPage)
.Take(request.Pagination.ItemsPerPage)
.Sort(request.Pagination.SortBy, request.Pagination.ReverseOrder);
List<Message> messages = await query.Select(x => new Message
CreateDate = x.CreateDate,
UserName = x.User.UserName
IsDisplayOnce = x.IsDisplayOnce,
MessageText = x.MessageText,
MessageTitle = x.MessageTitle,
TargetCode = x.TargetCode,
TargetReference = x.TargetReference,
List<DriverMessageDto> driverMessages = messages.Select(x => new DriverMessageDto
CreateDate = x.CreateDate.ToStringNoDateKind(),
UserName = x.User.UserName,
FromDate = x.FromDate.ToStringNoDateKind(),
ToDate = x.ToDate.ToStringNoDateKind(),
TargetCode = x.TargetCode,
MessageTitle = x.MessageTitle,
IsDisplayOnce = x.IsDisplayOnce,
MessageText = x.MessageText,
TargetReference = x.TargetReference
return new DriverMessagesResult()
Messages = driverMessages,
NumberOfMessages = messageCount
public async Task<DriverMessagesResult> GetDriverMessagesMobileAsync(GetDriverMessagesRequest request)
IQueryable<Message> query = _context.Message.AsNoTracking()
DateTime currentDay = DateTime.Now.Date;
DateTime nextDay = currentDay.AddDays(1).Date;
query = query.Where(x => x.TargetCode == request.TargetCode);
if (request.TargetCode == DomainCodes.Message.Target.Fleet || request.TargetCode == DomainCodes.Message.Target.State)
query = query.Where(x => x.TargetReference == request.TargetReference);
query = query.Where(x => x.FromDate >= currentDay && x.ToDate <= nextDay);
List<Message> messages = await query.Select(x => new Message
CreateDate = x.CreateDate,
UserName = x.User.UserName
IsDisplayOnce = x.IsDisplayOnce,
MessageText = x.MessageText,
MessageTitle = x.MessageTitle,
TargetCode = x.TargetCode,
TargetReference = x.TargetReference,
List<DriverMessageDto> driverMessages = messages.Select(x => new DriverMessageDto
CreateDate = x.CreateDate.ToStringNoDateKind(),
UserName = x.User.UserName,
FromDate = x.FromDate.ToStringNoDateKind(),
ToDate = x.ToDate.ToStringNoDateKind(),
TargetCode = x.TargetCode,
MessageTitle = x.MessageTitle,
IsDisplayOnce = x.IsDisplayOnce,
MessageText = x.MessageText,
TargetReference = x.TargetReference
return new DriverMessagesResult()
Messages = driverMessages,
NumberOfMessages = driverMessages.Count