zinab_elgendy пре 2 месеци
родитељ
комит
89ad831904

+ 3 - 3
MTWorkHR.API/Controllers/CompanyController.cs

@@ -29,15 +29,15 @@ namespace MTWorkHR.API.Controllers
         }
         [HttpGet("Get")]
         [AppAuthorize(Permissions = "Company")]
-        public async Task<ActionResult<CompanyDto>> Get()
+        public async Task<ActionResult<UpdateCompanyDto>> Get()
         {
             return Ok(await _companyService.GetById());
         }
         [HttpGet("GetById")]
         [AppAuthorize(Permissions = "Company")]
-        public async Task<ActionResult<CompanyDto>> GetById(long companyId)
+        public async Task<ActionResult<UpdateCompanyDto>> GetById(long companyId)
         {
-            return Ok(await _companyService.GetById(companyId));
+            return Ok(await _companyService.GetByIdForUpdate(companyId));
         }
 
         [HttpPost("Create")]

+ 3 - 3
MTWorkHR.API/Controllers/UserController.cs

@@ -35,15 +35,15 @@ namespace MTWorkHR.API.Controllers
         }
         [HttpGet("Get")]
         [AppAuthorize(Permissions = "User")]
-        public async Task<ActionResult<UserDto>> Get()
+        public async Task<ActionResult<UserUpdateDto>> Get()
         {
             return Ok(await _userService.GetById());
         }
         [HttpGet("GetById")]
         [AppAuthorize(Permissions = "User")]
-        public async Task<ActionResult<UserDto>> GetById([FromQuery] string userId)
+        public async Task<ActionResult<UserUpdateDto>> GetById([FromQuery] string userId)
         {
-            return Ok(await _userService.GetById(userId));
+            return Ok(await _userService.GetByIdForUpdate(userId));
         }
 
         [HttpGet("GetEmployeeById")]

+ 3 - 3
MTWorkHR.API/appsettings.Development.json

@@ -32,10 +32,10 @@
   },
   "MailSettings": {
     "ApiKey": "SendGrid-Key",
-    "FromAddress": "DoNotReply@bc3ee9f1-57df-4a29-b566-a84d72074975.azurecomm.net",
+    "FromAddress": "noreply@mtwork.com",
     "FromName": "MTWork Hr Management System",
-    "Password": "1qU8Q~gt4nex-gO3gWrc3FO~fpv8uGoTGqjyFbHx",
-    "Host": "smtp.azurecomm.net",
+    "Password": "Noreply@1111",
+    "Host": "smtp.gmail.com",
     "SmtpUsername": "SMTP_username", // "MTCommunicationServiceResource.57fe2efd-9859-488f-8313-0acd27450cf0.2ff48a6f-9604-49d0-b338-28e96f91ec99", //"EmailSMTPApp",
     "Port": 587,
     "TemplatePath": "C:\\Attachment\\MailTemp\\EmailTemplate.html"

+ 3 - 3
MTWorkHR.API/appsettings.json

@@ -31,10 +31,10 @@
   },
   "MailSettings": {
     "ApiKey": "SendGrid-Key",
-    "FromAddress": "DoNotReply@bc3ee9f1-57df-4a29-b566-a84d72074975.azurecomm.net",
+    "FromAddress": "noreply@mtwork.com",
     "FromName": "MTWork Hr Management System",
-    "Password": "1qU8Q~gt4nex-gO3gWrc3FO~fpv8uGoTGqjyFbHx",
-    "Host": "smtp.azurecomm.net",
+    "Password": "Noreply@1111",
+    "Host": "smtp.gmail.com",
     "Port": 587,
     "SmtpUsername": "SMTP_username", // "MTCommunicationServiceResource.57fe2efd-9859-488f-8313-0acd27450cf0.2ff48a6f-9604-49d0-b338-28e96f91ec99", //"EmailSMTPApp",
     "TemplatePath": "C:\\Attachment\\MailTemp\\EmailTemplate.html"

+ 1 - 1
MTWorkHR.Application/Services/Interfaces/ICompanyService.cs

@@ -13,7 +13,7 @@ namespace MTWorkHR.Application.Services.Interfaces
     {
       
         Task<List<CompanyDto>> GetAllCompanies();
-        Task<CompanyDto> GetById();
+        Task<UpdateCompanyDto> GetById();
         Task<CompanyDto> GetById(long companyId);
         Task<UpdateCompanyDto> GetByIdForUpdate(long companyId);
         Task Suspend(long companyId);

+ 1 - 1
MTWorkHR.Application/Services/Interfaces/IUserService.cs

@@ -15,7 +15,7 @@ namespace MTWorkHR.Application.Identity
         Task<UserUpdateDto> GetByIdForUpdate(string userId);
 
         Task<UserDto> GetByEmail(string email);
-        Task<UserDto> GetById();
+        Task<UserUpdateDto> GetById();
         Task<List<UserDto>> GetAllEmployees();
 
         Task<UserDto> GetUserById(string id);

+ 3 - 3
MTWorkHR.Application/Services/User/CompanyService.cs

@@ -45,12 +45,12 @@ namespace MTWorkHR.Application.Services
 
        
 
-        public async Task<CompanyDto> GetById()
+        public async Task<UpdateCompanyDto> GetById()
         {
             if (_globalInfo.CompanyId.HasValue)
-                return await GetById(_globalInfo.CompanyId.Value);
+                return await GetByIdForUpdate(_globalInfo.CompanyId.Value);
             else 
-                return new CompanyDto();
+                return new UpdateCompanyDto();
         }
         public override async Task<CompanyDto> GetById(long companyId)
         {

+ 22 - 19
MTWorkHR.Application/Services/User/TeamService.cs

@@ -82,18 +82,19 @@ namespace MTWorkHR.Application.Services
             }
             //entity.TeamUsers = input.TeamUserIds?.Select(s => new TeamUser { AssignedUserId = s,AssignedUserName = _userService.GetUserFullName(s).Result, IsAdmin = false }).ToList();
 
-
-            entity.TeamUsers = (await Task.WhenAll(input.TeamUserIds?.Select(async s =>
+            foreach(var teamUserId in input.TeamUserIds)
             {
-                var userInfo = await _userService.GetUserNameEmail(s);
-                return new TeamUser
+                var userInfo = await _userService.GetUserNameEmail(teamUserId);
+                if (entity.TeamUsers == null)
+                    entity.TeamUsers = new List<TeamUser>();
+                entity.TeamUsers.Add( new TeamUser
                 {
-                    AssignedUserId = s,
+                    AssignedUserId = teamUserId,
                     AssignedUserName = userInfo.FullName,
                     AssignedUserEmail = userInfo.Email,
                     IsAdmin = false
-                };
-            }) ?? Enumerable.Empty<Task<TeamUser>>())).ToList();
+                });
+            }         
 
             var team = await _unitOfWork.Team.AddAsync(entity);
             await _unitOfWork.CompleteAsync();
@@ -120,18 +121,21 @@ namespace MTWorkHR.Application.Services
             var NewItems = input.TeamUserIds?.Where(u => !oldUsers.Contains(u));
           //  var newTeamUsers = NewItems?.Select(s => new TeamUser {TeamId = input.Id, AssignedUserId = s, AssignedUserName = _userService.GetUserFullName(s).Result, IsAdmin = false }).ToList();
 
-            var newTeamUsers = (await Task.WhenAll(NewItems?.Select(async s =>
+            var newTeamUsers = new List<TeamUser>();
+            foreach (var teamUserId in NewItems)
             {
-                var (fullName, email) = await _userService.GetUserNameEmail(s);
-                return new TeamUser
+                var userInfo = await _userService.GetUserNameEmail(teamUserId);
+                if (entity.TeamUsers == null)
+                    entity.TeamUsers = new List<TeamUser>();
+                entity.TeamUsers.Add(new TeamUser
                 {
                     TeamId = input.Id,
-                    AssignedUserId = s,
-                    AssignedUserName = fullName,
-                    AssignedUserEmail = email,
+                    AssignedUserId = teamUserId,
+                    AssignedUserName = userInfo.FullName,
+                    AssignedUserEmail = userInfo.Email,
                     IsAdmin = false
-                };
-            }) ?? Enumerable.Empty<Task<TeamUser>>())).ToList();
+                });
+            }
 
             var DeletedItems = oldUsers?.Where(u => !input.TeamUserIds.Contains(u));
             _unitOfWork.BeginTran();
@@ -140,15 +144,14 @@ namespace MTWorkHR.Application.Services
                 var removeItem = entity.TeamUsers?.FirstOrDefault(u => u.AssignedUserId == delUser);
                 if(removeItem != null) await _unitOfWork.TeamUser.DeleteAsync(removeItem);
             }
-            foreach (var newUsr in newTeamUsers)
-            {
-                await _unitOfWork.TeamUser.AddAsync(newUsr);
-            }
+          
 
             await _unitOfWork.CompleteAsync();
             _unitOfWork.CommitTran();
 
             var response = Mapper.MapperObject.Mapper.Map<TeamDto>(entity);
+            response.TeamUserIds = input.TeamUserIds;
+
             return response;
         }
 

+ 2 - 2
MTWorkHR.Application/Services/User/UserService.cs

@@ -60,9 +60,9 @@ namespace MTWorkHR.Application.Services
             _logger = logger;
         }
 
-        public async Task<UserDto> GetById()
+        public async Task<UserUpdateDto> GetById()
         {
-            return await GetById(_globalInfo.UserId);
+            return await GetByIdForUpdate(_globalInfo.UserId);
         }
         public async Task<UserDto> GetByEmail(string email)
         {

+ 27 - 18
MTWorkHR.Infrastructure/EmailService/MailSender.cs

@@ -42,7 +42,13 @@ namespace MTWorkHR.Infrastructure.EmailService
 
         //    return response.IsSuccessStatusCode;
         //}
-        public async Task<bool> SendEmail(EmailMessage email)
+
+        /// <summary>
+        /// Send Email using an azure email address, smtpUserName and password
+        /// </summary>
+        /// <param name="email"></param>
+        /// <returns></returns>
+        public async Task<bool> SendEmailAzure(EmailMessage email)
         {
             var mailTo = email.To;
             var settings = _configuration.MailSettings;
@@ -99,22 +105,16 @@ namespace MTWorkHR.Infrastructure.EmailService
                 _logger.LogError(ex, "Authentication failed for username {SmtpUsername}: {Message}",
                 settings.SmtpUsername, ex.Message);
                 throw ex;
-                Console.WriteLine($"Authentication failed: {ex.Message}, Inner Exception: {ex.InnerException?.Message}");
-                return false;
             }
             catch (SmtpCommandException ex)
             {
                 _logger.LogError(ex, "SMTP error: {Message}, Status: {StatusCode}", ex.Message, ex.StatusCode);
                 throw ex;
-                Console.WriteLine($"SMTP error: {ex.Message}, Status: {ex.StatusCode}, Inner Exception: {ex.InnerException?.Message}");
-                return false;
             }
             catch (Exception ex)
             {
                 _logger.LogError(ex, "Error sending email to {To}: {Message}", mailTo, ex.Message);
                 throw ex;
-                Console.WriteLine($"Error sending email: {ex.Message}, Inner Exception: {ex.InnerException?.Message}");
-                return false;
             }
             finally
             {
@@ -128,7 +128,9 @@ namespace MTWorkHR.Infrastructure.EmailService
 
             return true;
         }
-        public async Task<bool> SendEmailSMTP(EmailMessage email)
+
+        //Send Email using an email address and password
+        public async Task<bool> SendEmail(EmailMessage email)
         {
             var mailTo = email.To;
             var settings = _configuration.MailSettings;
@@ -158,25 +160,32 @@ namespace MTWorkHR.Infrastructure.EmailService
             using var smtp = new SmtpClient(logger);
             try
             {
-               
-
-                smtp.Connect(_configuration.MailSettings.Host, _configuration.MailSettings.Port, MailKit.Security.SecureSocketOptions.StartTls);
-                smtp.Authenticate(_configuration.MailSettings.FromAddress, _configuration.MailSettings.Password);
+                await smtp.ConnectAsync(_configuration.MailSettings.Host, _configuration.MailSettings.Port, MailKit.Security.SecureSocketOptions.StartTls);
+                await smtp.AuthenticateAsync(_configuration.MailSettings.FromAddress, _configuration.MailSettings.Password);
+                _logger.LogInformation("Sending email to {To} with subject {Subject}", mailTo, email.Subject);
                 await smtp.SendAsync(emailObj);
-                //smtp.Disconnect(true);
+                _logger.LogInformation("Email sent successfully to {To}", mailTo);
+
             }
-            catch (MailKit.Security.AuthenticationException ex)
+            catch (AuthenticationException ex)
             {
-                Console.WriteLine($"Authentication failed: {ex.Message}");
-                throw;
+                _logger.LogError(ex, "Authentication failed for username {SmtpUsername}: {Message}",
+                settings.SmtpUsername, ex.Message);
+                throw ex;
+            }
+            catch (SmtpCommandException ex)
+            {
+                _logger.LogError(ex, "SMTP error: {Message}, Status: {StatusCode}", ex.Message, ex.StatusCode);
+                throw ex;
             }
             catch (Exception ex)
             {
-                Console.WriteLine($"Error sending email: {ex.Message}");
-                throw;
+                _logger.LogError(ex, "Error sending email to {To}: {Message}", mailTo, ex.Message);
+                throw ex;
             }
             finally
             {
+                _logger.LogInformation("Disconnected from SMTP server");
                 await smtp.DisconnectAsync(true);
             }
             return true;