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); }
// 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)); }
// GET: Messages/Create public IActionResult Create() { List <string> users = CommunityUser.getEmails(_context2); ViewData["users"] = users; ViewData["Confirmation"] = ""; return(View()); }
// 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)); }
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(); }
// 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()); }
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()); } }
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 { } } }
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); }