63 lines
2.7 KiB
C#
63 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using _0_Framework.Application;
|
|
using _0_Framework.InfraStructure;
|
|
using AccountManagement.Application.Contracts.TaskMessage;
|
|
using AccountManagement.Domain.AccountAgg;
|
|
using AccountManagement.Domain.AccountLeftWorkAgg;
|
|
using AccountManagement.Domain.TaskMessageAgg;
|
|
using AccountManagement.Domain.TaskMessageItemsAgg;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
|
|
|
public class TaskMessageRepository : RepositoryBase<long, TaskMessage>, ITaskMessageRepository
|
|
{
|
|
private readonly AccountContext _accountContext;
|
|
private readonly IHttpContextAccessor _contextAccessor;
|
|
private readonly IAccountRepository _accountRepository;
|
|
public TaskMessageRepository(AccountContext accountContext, IHttpContextAccessor contextAccessor, IAccountRepository accountRepository) : base(accountContext)
|
|
{
|
|
_accountContext = accountContext;
|
|
_contextAccessor = contextAccessor;
|
|
_accountRepository = accountRepository;
|
|
}
|
|
|
|
|
|
public void CreateTaskMessageItems(long senderId, long receiverId, long messageId)
|
|
{
|
|
var messageItems = new TaskMessageItems(senderId, receiverId, messageId);
|
|
_accountContext.Add(messageItems);
|
|
_accountContext.SaveChanges();
|
|
}
|
|
public List<TaskMessageViewModel> GetTaskMessages(long assignId)
|
|
{
|
|
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
|
var positionId =int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
|
var raw = _accountContext.TaskMessages.Include(x => x.TaskMessageItemsList).Include(x => x.Assign).Where(x =>
|
|
x.AssignId == assignId ).Select(
|
|
x => new TaskMessageViewModel()
|
|
{
|
|
SenderId = x.TaskMessageItemsList.First().SenderAccountId,
|
|
ReceiverId = x.TaskMessageItemsList.First().ReceiverAccountId,
|
|
CreationDate = $"{x.CreationDate.ToFarsi()} {x.CreationDate.DayOfWeek.DayOfWeeKToPersian()} {x.CreationDate.Hour}:{x.CreationDate.Minute}",
|
|
Message = x.Message,
|
|
TypeOfMessage = x.TypeOfMessage,
|
|
RequestedDateFa = x.RequestedDateFa
|
|
|
|
}).ToList();
|
|
|
|
List<TaskMessageViewModel> res = raw.Select(x => new TaskMessageViewModel()
|
|
{
|
|
SenderId = x.SenderId,
|
|
CreationDate = x.CreationDate,
|
|
Message = x.Message,
|
|
TypeOfMessage = x.TypeOfMessage,
|
|
ReceiverId = x.ReceiverId,
|
|
SenderName = _accountRepository.GetAccountViewModel(x.SenderId).Fullname
|
|
}).ToList();
|
|
return res;
|
|
}
|
|
} |