public async Task <IActionResult> GetAllowedDestination(int userId) { // var adminid = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); if (await _permissionValidation.ValidForAllPermission(userId)) { var user = await _repo.Find(x => x.Id == userId); var users = await _repo.List(); if (await(_permissionValidation.ValidatToGetDistanation(userId)) == 1 || (await _permissionValidation.ValidatToGetDistanation(userId)) == 3) { var Getuser = (from u in users select new { u.Id, }).ToList(); return(Ok(Getuser)); } //specific orgnization or spesific user if (await(_permissionValidation.ValidatToGetDistanation(userId)) == 4 || await(_permissionValidation.ValidatToGetDistanation(userId)) == 5) { var Getuser = (from u in await _DistinationRepo.List() where u.UserID == user.Id select new { u.Id, u.DestinationUserId, }).ToList(); return(Ok(Getuser)); } if (await(_permissionValidation.ValidatToGetDistanation(userId)) == 0) { return(BadRequest("the user you try to get His Distnation he don't have permission")); } return(Ok("get allowed permission done")); } return(Unauthorized("you don't have permission")); }
public async Task <IActionResult> SendMessage(MessageToSendDto messageToSendDto) { int userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var user = await _repo.Find(x => x.Id == userId); if (user.Status == UserStatus.inactive) { return(BadRequest("!!Your Account is inactive You cant's Send Messages ")); } var users = await _repo.List(); string encryptedSubject = SecurityHelper.EncryptString(key, messageToSendDto.Subject); string encryptedContent = SecurityHelper.EncryptString(key, messageToSendDto.Content); if (await _permissionValidation.ValidatToGetDistanation(user.Id) == 1 || await _permissionValidation.ValidatToGetDistanation(user.Id) == 3) { var getAllUser = (from u in users //join od in await _userRuleRepo.List() on u.RuleId equals od.RuleId select new { u.Id, u.Email }).ToList(); var Msg = new Message { Subject = encryptedSubject, Content = encryptedContent, Date = DateTime.Now, }; var builtmessage = await _messageRepo.Add(Msg); foreach (var item in getAllUser) { var inboxMsg = new InboxMessage { message = builtmessage, MessageFrom = user.Email, UserId = item.Id, MessageId = builtmessage.Id }; var inboxedMessage = await _inboxRepo.Add(inboxMsg); var sentMsg = new SentMessage { message = builtmessage, MessageId = builtmessage.Id, MessageTo = item.Email, UserId = user.Id }; var sentMessage = await _sentRepo.Add(sentMsg); } return(Ok("MESSAGE SENT TO ALL USERS")); } else if (await _permissionValidation.ValidatToGetDistanation(user.Id) == 4 || await _permissionValidation.ValidatToGetDistanation(user.Id) == 5) { var allAvailableDestination = (from d in await _distinationRepo.List() where d.UserID == user.Id select new { d.DestinationUserId, }).ToList(); var Msg = new Message { Subject = encryptedSubject, Content = encryptedContent, Date = DateTime.Now, }; var builtmessage = await _messageRepo.Add(Msg); foreach (var item in allAvailableDestination) { var inboxMsg = new InboxMessage { message = builtmessage, MessageFrom = user.Email, UserId = item.DestinationUserId, MessageId = builtmessage.Id }; var inboxedMessage = await _inboxRepo.Add(inboxMsg); var emailreciver = await _repo.Find(x => x.Id == item.DestinationUserId); var sentMsg = new SentMessage { message = builtmessage, MessageId = builtmessage.Id, MessageTo = emailreciver.Email, UserId = user.Id }; var sentMessage = await _sentRepo.Add(sentMsg); } return(Ok("MESSAGE SENT TO The Specific USERS")); } else { return(Unauthorized("You don't any permission to Send message")); } }