Files
Backend-Api/AccountMangement.Infrastructure.EFCore/Repository/TaskMessageRepository.cs
2024-09-16 19:48:56 +03:30

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