This commit is contained in:
mmrbnjd
2024-06-25 17:14:08 +03:30
parent 4631d8f159
commit ce81911242
10 changed files with 76 additions and 23 deletions

View File

@@ -36,7 +36,7 @@
<ItemGroup>
<Reference Include="Service">
<HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
<HintPath>..\..\Dlls\Service.dll</HintPath>
</Reference>
</ItemGroup>

View File

@@ -18,8 +18,9 @@ namespace Back.Controllers
private readonly MobileValidation _mobilevalidation;
private readonly ServValidatinMsg _servValidatinMsg;
private readonly servSendMsg _servSendMsg;
private readonly servNotification _servNotification;
public UserController(servUser servUser, MobileValidation mobilevalidation, servCompany servCompany
, ServValidatinMsg servValidatinMsg, servSendMsg servSendMsg)
, ServValidatinMsg servValidatinMsg, servSendMsg servSendMsg, servNotification servNotification)
{
_servUser = servUser;
@@ -27,6 +28,7 @@ namespace Back.Controllers
_servCompany = servCompany;
_servValidatinMsg = servValidatinMsg;
_servSendMsg = servSendMsg;
_servNotification = servNotification;
}
[HttpPost("authenticate")]
[AllowAnonymous]
@@ -92,6 +94,15 @@ namespace Back.Controllers
return Ok(await _servUser.GetDashBoard(Convert.ToInt32(UserID)));
}
[HttpPut("ReadNotification/{ntID}")]
public async Task<ActionResult<bool>> ReadNotification(int ntID)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
return Ok(await _servNotification.ReadNotification(Convert.ToInt32(UserID), ntID));
}
}
}

View File

@@ -43,6 +43,7 @@ namespace TaxPayer.Infrastructure.Persistence
public DbSet<OrderDiscountCode> OrderDiscountCodes { get; set; }
public DbSet<TiceketUnknownPeople> TiceketUnknownPeoples { get; set; }
public DbSet<SaleLead> SaleLeads { get; set; }
public DbSet<UserNotfi> UserNotifis { get; set; }
#endregion
//public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
//{

View File

@@ -5,9 +5,10 @@
public int ID { get; set; }
public int Type { get; set; }
public string Message { get; set; }
public string? Path { get; set; }
public string? ViewSize { get; set; }
public string Title { get; set; }
public string Date { get; set; }
public bool Status { get; set; }
public int Status { get; set; }
public string? ForUser { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace Back.Data.Models
{
public class UserNotfi
{
public int ID { get; set; }
public int UserID { get; set; }
public int NotificationID { get; set; }
}
}

View File

@@ -7,14 +7,27 @@ namespace Back.Services
public class servNotification
{
private readonly IAsyncRepository<Notification> _NotificationRepo;
public servNotification(IAsyncRepository<Notification> NotificationRepo)
private readonly IAsyncRepository<UserNotfi> _UserNotfiRepo;
public servNotification(IAsyncRepository<Notification> NotificationRepo, IAsyncRepository<UserNotfi> userNotfiRepo)
{
_NotificationRepo = NotificationRepo;
_UserNotfiRepo = userNotfiRepo;
}
public async Task<List<Notification>> GetNotifications()
public async Task<bool> ReadNotification(int UserID,int ntID)
{
return await _NotificationRepo.Get(w=>w.Status).ToListAsync();
if (!await _UserNotfiRepo.Get(w => w.UserID == UserID && w.NotificationID == ntID).AnyAsync())
return await _UserNotfiRepo.AddBoolResultAsync(new UserNotfi
{
NotificationID = ntID,
UserID = UserID,
});
else return true;
}
public async Task<List<Notification>> GetNotifications(int UserID)
{
var readmsg=await _UserNotfiRepo.Get(w => w.UserID == UserID).Select(s=>s.NotificationID).ToListAsync();
return await _NotificationRepo.Get(w=>(string.IsNullOrEmpty(w.ForUser) || w.ForUser.Contains("/"+UserID.ToString()+"/"))&& !readmsg.Contains(w.ID)).ToListAsync();
}
}
}

View File

@@ -244,14 +244,14 @@ namespace Back.Services
request.Warning.Add(new AlertDTO { Status = 5, Message = "بهتر است اطلاعات شرکت بروزرسانی شود" });
}
}
var nots = await _servNotification.GetNotifications();
var nots = await _servNotification.GetNotifications(UserID);
if (nots.Any())
request.Notifications = nots.Select(s => new AlertDTO
{
ViewSize=s.ID.ToString(),
Message = s.Message,
Status = s.Type,
Path = s.Path,
ViewSize = s.ViewSize
Path = s.Title
}).ToList();
LastActivitySevice lastInvoice = new LastActivitySevice();

View File

@@ -1,11 +1,25 @@
@using Shared.DTOs
<h3>Notifications</h3>
<h3>@items.Count()</h3>
@using Front.Services
@using Shared.DTOs
@inject HttpClientController hc;
@inject Fixedvalues fv;
@foreach (var item in items)
{
<Alert OnClosed="()=>OnClosedAlert(item)" Color="(AlertColor)Enum.Parse(typeof(AlertColor), item.Status.ToString())" Dismissable="true"> @item.Message </Alert>
}
<Alert Color="AlertColor.Warning" Dismissable="true"> <strong>Holy guacamole!</strong> You should check in on some of those fields below. </Alert>
@code {
[Parameter] public List<AlertDTO> items { get; set; }
public async Task OnClosedAlert(AlertDTO nt)
{
var rsp= await hc.Put($"User/ReadNotification/{Convert.ToInt32(nt.ViewSize)}");
// if (rsp.IsSuccessStatusCode)
// {
// fv.dashBoard.Notifications.Remove(nt);
// }
}
}

View File

@@ -166,11 +166,15 @@
</ul>
</li>
<!--/ User -->
<li class="nav-item lh-1 me-3 f-ir">
<Button Type="ButtonType.Button" @onclick="ShowNotifications" Color="ButtonColor.None">
<Badge Color="BadgeColor.Danger"><Icon Name="IconName.MegaphoneFill" /> @dashBoard?.Notifications.Count()</Badge>
</Button>
</li>
@if (dashBoard?.Notifications.Count()>0)
{
<li class="nav-item lh-1 me-3 f-ir">
<Button Type="ButtonType.Button" @onclick="ShowNotifications" Color="ButtonColor.None">
<Badge Color="BadgeColor.Danger"><Icon Name="IconName.MegaphoneFill" /> @dashBoard?.Notifications.Count()</Badge>
</Button>
</li>
}
</ul>
</div>
</nav>

View File

@@ -34,9 +34,9 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
}) ;
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");