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"));
        }
Ejemplo n.º 2
0
        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"));
            }
        }