Example #1
0
        public async Task <IActionResult> Create([Bind("Reciever,Title,text")] Message message)
        {
            List <string> users = CommunityUser.getEmails(_context2);

            ViewData["users"] = users;
            try    //creates new message, gets receivers id and send back confirmation
            {
                message.Reciever = _context2.Users.Single(u => u.Email == message.Reciever).Id;
                var userId = _userManager.GetUserId(User);
                message.Sender   = userId;
                message.TimeSent = DateTime.Now;
                message.Read     = false;
                _context.Add(message);
                await _context.SaveChangesAsync();

                ViewData["Confirmation"] = "Message sent to " + CommunityUser.getEmail(message.Reciever, _context2) + ", " + DateTime.Now;
                ViewData["users"]        = users;
                return(View(message));
            }
            catch (InvalidOperationException e)
            {
                ViewData["users"]        = users;
                ViewData["Confirmation"] = "Failed to deliver";
                return(View(message));
            }

            return(View(message));
        }
        public async Task <CommunityUser> JoinCommunity(Guid userId, string slug)
        {
            var isExist = await _communityUserRepository.GetAll()
                          .Where(x => x.IsDeleted == false && x.UserId == userId && x.Community.Slug == slug)
                          .FirstOrDefaultAsync();

            if (isExist != null)
            {
                throw new Exception("bu islem zaten yapilmis");
            }

            var joinedUser = await _userRepository.GetByIdAsync(userId);

            var community = await _communityRepository.GetAll().FirstOrDefaultAsync(x => x.Slug == slug);

            var moderators = _communityUserRepository.GetAll().Include(x => x.User)
                             .Where(x => x.CommunityId == community.Id && x.IsAdmin && x.IsDeleted == false);

            var model = new CommunityUser
            {
                UserId      = userId,
                CommunityId = community.Id
            };
            await _communityUserRepository.AddAsync(model);

            foreach (var user in moderators)
            {
                await _emailSender.SendEmail(user.User.EmailAddress, "Kullanıcılar topluluğunu keşfediyor",
                                             joinedUser.Username + " topluluğuna katıldı: https://saalla.com/t/" + community.Slug);
            }
            return(model);
        }
Example #3
0
        // GET: Messages/Details/5 read a message, makes message read
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var message = await _context.Messages
                          .FirstOrDefaultAsync(m => m.id == id);

            if (message == null)
            {
                return(NotFound());
            }
            MessageViewModel vm = new MessageViewModel(); //convert message to messageVM

            vm.id       = message.id;
            vm.Reciever = CommunityUser.getEmail(message.Reciever, _context2);
            vm.Sender   = CommunityUser.getEmail(message.Sender, _context2);
            vm.Title    = message.Title;
            vm.text     = message.text;
            vm.Read     = message.Read;
            vm.TimeSent = message.TimeSent;

            return(await Details(id, vm));
        }
Example #4
0
        // GET: Messages/Create
        public IActionResult Create()
        {
            List <string> users = CommunityUser.getEmails(_context2);

            ViewData["users"]        = users;
            ViewData["Confirmation"] = "";
            return(View());
        }
Example #5
0
        // GET: Messages, gets last logged in and un read messages and also updates last logged in
        public async Task <IActionResult> Index()
        {
            CommunityUserViewModel vm = new CommunityUserViewModel();

            vm.lastLoggedIn   = CommunityUser.getLastLoggedIn(_userManager.GetUserId(User), _context2);
            vm.messagesUnread = await Message.getNrOfUnreadMessagesAsync(_userManager.GetUserId(User), _context);

            return(await Index(vm));
        }
Example #6
0
        public async Task joinCommunityAsync(int CommID)
        {
            var UseriD = await _db.Users.Where(u => u.UserName == HttpContext.Current.User.Identity.Name).SingleOrDefaultAsync();

            CommunityUser newUser = new CommunityUser();

            newUser.UserID      = UseriD.Id;
            newUser.CommunityID = CommID;

            _db.CommunityUsers.Add(newUser);
            await _db.SaveChangesAsync();
        }
Example #7
0
        // GET: Messages, gets all senders of messages to receiver
        public async Task <IActionResult> Read()
        {
            var userId = _userManager.GetUserId(User);

            List <string> messages         = Message.getIdOfSendersToReciever(userId, _context);
            List <string> emailsOfMessages = new List <string>();

            foreach (var item in messages) // all emails of senders
            {
                emailsOfMessages.Add(CommunityUser.getEmail(item, _context2));
            }
            ViewData["senders"]           = emailsOfMessages;
            ViewData["totalNrOfRead"]     = await Message.getNrOfReadMessagesAsync(userId, _context);;
            ViewData["totalNrOfMessages"] = await Message.getNrOfMessagesAsync(userId, _context);

            ViewData["totalNrOfDeleted"] = CommunityUser.getNrOfDeletedMessages(userId, _context2);
            return(View());
        }
Example #8
0
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            var message = await _context.Messages.FindAsync(id);

            if (message.Reciever.Equals(_userManager.GetUserId(User)))
            {
                _context.Messages.Remove(message);
                await _context.SaveChangesAsync();

                await CommunityUser.setDeletedMessagesAsync(_userManager.GetUserId(User), _context2);

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                return(NotFound());
            }
        }
Example #9
0
        public async Task ViewDetailsPAsync(int id, string[] AppUser)
        {
            CommunityUser cu = new CommunityUser();

            foreach (var item in AppUser)
            {
                var memchk = await(from cmu in  _db.CommunityUsers where cmu.UserID == item && cmu.CommunityID == id select cmu.ID).ToListAsync();

                if (memchk.Count == 0)
                {
                    cu.UserID      = item;
                    cu.CommunityID = id;
                    _db.CommunityUsers.Add(cu);
                    await _db.SaveChangesAsync();
                }
                else
                {
                }
            }
        }
Example #10
0
        public async Task <IActionResult> Index(CommunityUserViewModel vm)
        {
            await CommunityUser.setLastLoggedInAsync(_userManager.GetUserId(User), _context2);

            return(View(vm));
        }
        public async Task <Response> CreateCommunity(CreateCommunity input)
        {
            var responseModel = new Response();

            var userComs = await _communityUserRepository.GetAll()
                           .Where(x => x.UserId == input.UserId && x.IsAdmin && x.IsDeleted == false)
                           .ToListAsync();

            var user = await _userRepository.GetByIdAsync(input.UserId);

            if (userComs.Count > 1 && !user.IsAdmin)
            {
                responseModel.Status  = false;
                responseModel.Message = "Daha fazla topluluk oluşturamazsınız";
                return(responseModel);
            }

            var slug = Slug.FriendlyUrlTitle(input.Name);

            var isExist = _communityRepository.GetAll().Any(x => x.Slug == slug);

            if (isExist)
            {
                responseModel.Status  = false;
                responseModel.Message = "Bu isimde bir topluluk zaten var";
                return(responseModel);
            }

            var category = await _categoryRepository.GetAll().FirstOrDefaultAsync(x => x.Slug == input.CatSlug);

            var model = new Community
            {
                Name        = input.Name,
                Description = input.Description,
                CategoryId  = category.Id,
                Slug        = slug
            };

            if (input.LogoFile != null)
            {
                var path = await _blobService.InsertFile(input.LogoFile);

                model.LogoPath = path;
            }
            if (input.CoverImage != null)
            {
                var path = await _blobService.InsertFile(input.CoverImage);

                model.CoverImagePath = path;
            }
            var result = await _communityRepository.AddAsync(model);

            var communityUser = new CommunityUser
            {
                CommunityId = result.Id,
                UserId      = input.UserId,
                IsAdmin     = true
            };
            await _communityUserRepository.AddAsync(communityUser);

            responseModel.Message = "Topluluk başarıyla oluşturuldu";
            responseModel.Status  = true;
            responseModel.Slug    = model.Slug;
            return(responseModel);
        }
        public async Task <Response> AddModerator(AddModeratorDto input)
        {
            var response  = new Response();
            var community = await _communityRepository.GetAll()
                            .FirstOrDefaultAsync(x => !x.IsDeleted && x.Slug == input.CommunitySlug);

            var requester = await _userRepository.GetByIdAsync(input.RequesterModeratorId);

            var user = await _userRepository.GetByIdAsync(input.UserId);

            var isAlreadyExist = await _communityUserRepository.GetAll()
                                 .Where(x => x.UserId == input.UserId && x.Community.Slug == input.CommunitySlug &&
                                        x.IsDeleted == false && x.IsAdmin).FirstOrDefaultAsync();

            if (isAlreadyExist != null)
            {
                response.Message = "Bu kullanıcı zaten moderatör";
                response.Status  = false;
                return(response);
            }

            var isWaiting = await _communityUserRepository.GetAll()
                            .Where(x => x.UserId == input.UserId && x.Community.Slug == input.CommunitySlug &&
                                   !x.IsDeleted && x.ModeratorRequest == ModeratorRequest.Waiting && !x.IsAdmin).FirstOrDefaultAsync();

            if (isWaiting != null)
            {
                response.Message = "Bu kullanıcıya zaten istek gönderilmiş";
                response.Status  = false;
                return(response);
            }

            var isJoined = await _communityUserRepository.GetAll()
                           .Where(x => x.UserId == input.UserId && x.Community.Slug == input.CommunitySlug && !x.IsDeleted)
                           .FirstOrDefaultAsync();

            if (isJoined != null)
            {
                isJoined.ModeratorRequest = ModeratorRequest.Waiting;
                await _communityUserRepository.UpdateAsync(isJoined);

                response.Message = "Kullanıcıya istek gönderildi.";
                response.Status  = true;
                var content = requester.Username + " " + "seni" + " " + community.Name +
                              " topluluğuna moderatör olarak eklemek istiyor.";
                var notify = new Notification
                {
                    TargetId    = community.Id,
                    OwnerUserId = input.UserId,
                    TargetName  = "/t/" + community.Slug,
                    Type        = NotifyContentType.AddModerator,
                    Content     = content,
                    ImgPath     = requester.ProfileImagePath
                };
                await _notificationRepository.AddAsync(notify);

                await _emailSender.SendEmail(user.EmailAddress, "Moderatörlük isteği", content + " https://saalla.com");

                return(response);
            }

            var newRelation = new CommunityUser
            {
                UserId           = input.UserId,
                CommunityId      = community.Id,
                ModeratorRequest = ModeratorRequest.Waiting
            };
            await _communityUserRepository.AddAsync(newRelation);

            response.Message = "Kullanıcıya istek gönderildi.";
            response.Status  = true;
            var content2 = requester.Username + " seni" + community.Name +
                           " topluluğuna moderatör olarak eklemek istiyor.";
            var notify2 = new Notification
            {
                TargetId    = community.Id,
                OwnerUserId = input.UserId,
                TargetName  = "/t/" + community.Slug,
                Type        = NotifyContentType.AddModerator,
                Content     = requester.Username + " seni" + community.Name + " topluluğuna moderatör olarak eklemek istiyor.",
                ImgPath     = community.LogoPath
            };
            await _notificationRepository.AddAsync(notify2);

            await _emailSender.SendEmail(user.EmailAddress, "Moderatörlük isteği", content2 + " https://saalla.com");

            return(response);
        }