// using System; // using System.Collections.Generic; // using System.Linq; // using System.Threading.Tasks; // using Contracts; // using Contracts.DTOs.Generic; // using Contracts.DTOs.Requests; // using Core.Utils; // using Domain; // using Domain.Entities; // using Microsoft.EntityFrameworkCore; // namespace Auth.Core.Services.Requests; // public class RequestService // { // private readonly Context context; // public RequestService(Context context) // { // this.context = context; // } // public async Task CreateRequest(RequestVM requestVM, string userId) // { // requestVM.IssuerId = userId; // requestVM = CreateTitleAndDescription(requestVM); // var request = Request.ToEntity(requestVM); // await context.Requests.AddAsync(request); // await context.SaveChangesAsync(); // } // public async Task<(List, int)> GetRequests( // RequestFilter requestFilter, // Pagination pagination // ) // { // var query = context.Requests.AsQueryable(); // query = query.ApplyFilter(requestFilter); // // query = query.ApplySorting(sortBy); // var count = query.Count(); // query = query.Paginate(pagination); // query = query.Include(x => x.AcceptedBy).Include(x => x.Issuer); // return (await query.ToListAsync(), count); // } // public async Task> GetRequestsAsUser(RequestFilter requestFilter, string id) // { // return await context.Requests.Where(x => x.IssuerId == id).ToListAsync(); // } // public async Task TreatRequest(RequestVM requestVM, string id) // { // var request = await context.Requests.FirstOrDefaultAsync(x => // x.Id == requestVM.Id && requestVM.AcceptedById == id // ); // var user = await context.AppUsers.FindAsync(id); // if (request != null) // { // request.AcceptedBy = user; // request.DateRequestTreated = DateTime.UtcNow; // request.RequestStatus = requestVM.RequestStatus; // context.Requests.Update(request); // } // await context.SaveChangesAsync(); // } // public RequestVM CreateTitleAndDescription(RequestVM requestVM) // { // if (requestVM.RequestType == AppEnum.RequestType.LeavePermission) // { // if (requestVM.IsLeaveEarly == true) // { // requestVM.Title = "خروج مبكر"; // requestVM.Description = // $"طلب موافقة على الخروج المبكر يوم {requestVM.PermissionDate} الساعة {requestVM.PermissionTime}."; // } // else // { // requestVM.Title = "دخول متأخر"; // requestVM.Description = // $"طلب موافقة على الدخول المتأخر يوم {requestVM.PermissionDate} الساعة {requestVM.PermissionTime}."; // } // } // else if (requestVM.RequestType == AppEnum.RequestType.Punches) // { // if (requestVM.IsAttend == true) // { // requestVM.Title = "تسجيل دخول"; // requestVM.Description = // $"طلب موافقة على تسجيل الدخول بتاريخ {requestVM.PunchDate} والساعة {requestVM.PunchTime}."; // } // else // { // requestVM.Title = "تسجيل خروج"; // requestVM.Description = // $"طلب موافقة على تسجيل الخروج بتاريخ {requestVM.PunchDate} والساعة {requestVM.PunchTime}."; // } // } // else if (requestVM.RequestType == AppEnum.RequestType.AbsencePermission) // { // if (requestVM.IsFromHolidays == true) // { // requestVM.Title = "طلب أجازة"; // requestVM.Description = // $"طلب إذن بالغياب يوم {requestVM.AbsenceDate} و يحسب من رصيد الأجازات السنوية."; // } // else // { // requestVM.Title = "إذن بالغياب"; // requestVM.Description = $"طلب إذن بالغياب يوم {requestVM.AbsenceDate}."; // } // } // else if (requestVM.RequestType == AppEnum.RequestType.Financial) // { // if (requestVM.FinancialType == AppEnum.FinancialType.Loan) // { // requestVM.Title = "طلب سلفة"; // requestVM.Description = $"طلب سلفة بقيمة {requestVM.Amount}."; // } // else if (requestVM.FinancialType == AppEnum.FinancialType.Incentive) // { // requestVM.Title = "طلب تسوية مالية"; // requestVM.Description = $"طلب تسوية مالية قيمتها {requestVM.Amount}."; // } // } // return requestVM; // } // }