public async Task <ResultDto> ExecuteAsync(RequestAddNewMessageDto request) { return(await Task.Run(async() => { try { var chatroom = await _context.Chatrooms .FirstOrDefaultAsync(c => c.Guid == request.Guid); var user = await _context.Users.FindAsync(request.UserId); #region --Validation-- if (user == null || chatroom == null) { return new ResultDto() { Status = Common.Enums.ServiceStatus.NotFound, }; } if (!_context.UserInChatrooms.Any(u => u.ChatroomId == chatroom.Id && u.UserId == request.UserId)) { return new ResultDto() { Status = Common.Enums.ServiceStatus.AccessDenied, }; } #endregion Message message = new Message() { Chatroom = chatroom, ChatroomID = chatroom.Id, SendDate = DateTime.Now, Sender = user, SenderId = request.UserId, Text = request.Text, MessageType = MessageType.Massage }; await _context.Messages.AddAsync(message); await _context.SaveChangesAsync(); return new ResultDto() { Status = Common.Enums.ServiceStatus.Success }; } catch (Exception) { return new ResultDto() { Status = Common.Enums.ServiceStatus.SystemError, }; } })); }
public async Task <ResultDto <Guid> > ExecuteAsync(long MyUserId, Guid ChatroomGuid) { return(await Task.Run(async() => { try { var chatroom = await _context.Chatrooms .FirstOrDefaultAsync(c => c.Guid == ChatroomGuid); #region validation if (chatroom == null || chatroom.ChatroomType == Common.Enums.ChatroomType.PV) { return new ResultDto <Guid>() { Status = Common.Enums.ServiceStatus.NotFound, }; } if ((!_context.AdminInChatrooms.Any(a => a.UserId == MyUserId && a.ChatroomId == chatroom.Id)) && chatroom.CreatorId != MyUserId) { return new ResultDto <Guid>() { Status = Common.Enums.ServiceStatus.AccessDenied, }; } #endregion chatroom.JoinLinkGuid = Guid.NewGuid(); await _context.SaveChangesAsync(); return new ResultDto <Guid>() { Data = chatroom.JoinLinkGuid, Status = Common.Enums.ServiceStatus.Success, }; } catch (Exception) { return new ResultDto <Guid>() { Status = Common.Enums.ServiceStatus.SystemError, }; } })); }
public async Task <ResultDto <ResultUserSignup> > Execute(RequestUserSignupDto request) { return(await Task.Run(async() => { if (_context.Users.Any(u => u.MobileNumber == request.MobileNumber)) { return new ResultDto <ResultUserSignup>() { Status = ServiceStatus.Error, Message = "این شماره قبلا ثبت شده است!!" }; } try { User newUser = new User() { MobileNumber = request.MobileNumber, Name = request.Name, Password = await request.Password.ToHashedAsync(), InsertTime = DateTime.Now, LastOnline = DateTime.Now, UserInRole = UserInRole.User, HashKey = await Guid.NewGuid().ToString().ToHashedAsync() }; await _context.Users.AddAsync(newUser); #region --Save Image-- if (request.ImageFile != null) { var upResult = await request.ImageFile.UploadFileAsync("Images/UserImages/", _environment); if (upResult.Status) { var newImage = new UserImage() { ImageName = upResult.FileNameAddress, User = newUser, UserId = newUser.Id, InsertTime = DateTime.Now, }; await _context.UserImages.AddAsync(newImage); } else { return new ResultDto <ResultUserSignup>() { Status = ServiceStatus.SaveFileError, }; } } #endregion await _context.SaveChangesAsync(); return new ResultDto <ResultUserSignup>() { Data = new ResultUserSignup() { UserId = newUser.Id, }, Status = ServiceStatus.Success }; } catch (Exception) { return new ResultDto <ResultUserSignup>() { Status = ServiceStatus.SystemError }; } })); }
public async Task <ResultDto> ExecuteAsync(RequestCreateNewGroupService request) { return(await Task.Run(async() => { try { #region Find User var Creator = await _context.Users.FindAsync(request.UserId); #endregion #region Validate if (Creator == null) { return new ResultDto() { Status = Common.Enums.ServiceStatus.NotFound }; } if (String.IsNullOrWhiteSpace(request.GroupName)) { return new ResultDto() { Status = Common.Enums.ServiceStatus.Error, Message = "نام وارد شده اشتباه اسنت" }; } #endregion #region --Create Chatroom-- Chatroom newChatroom = new Chatroom { Name = request.GroupName, ChatroomType = Common.Enums.ChatroomType.Group, CreatorId = request.UserId, Creator = Creator, Guid = Guid.NewGuid(), InsertTime = DateTime.Now, }; await _context.Chatrooms.AddAsync(newChatroom); Message info = new Message() { Chatroom = newChatroom, ChatroomID = newChatroom.Id, MessageType = MessageType.Info, SendDate = DateTime.Now, Text = $"گروه {newChatroom.Name} ایجاد شد" }; await _context.Messages.AddAsync(info); #endregion #region --add image to group-- if (request.ImageFile != null) { var upRes = await request.ImageFile.UploadFileAsync("Images/ChatoomImage/", _environment); if (!upRes.Status) { return new ResultDto() { Status = Common.Enums.ServiceStatus.SaveFileError, }; } ChatroomImage chatroomImage = new ChatroomImage() { Chatroom = newChatroom, ChatroomId = newChatroom.Id, ImageName = upRes.FileNameAddress, InsertTime = DateTime.Now, }; await _context.ChatroomImages.AddAsync(chatroomImage); } #endregion #region --Add Creator To Group-- UserInChatroom userInChatroom = new UserInChatroom() { Chatroom = newChatroom, ChatroomId = newChatroom.Id, User = Creator, UserId = request.UserId, }; await _context.UserInChatrooms.AddAsync(userInChatroom); #endregion await _context.SaveChangesAsync(); return new ResultDto() { Status = Common.Enums.ServiceStatus.Success, }; } catch (Exception) { return new ResultDto() { Status = Common.Enums.ServiceStatus.SystemError, }; } })); }
public async Task <ResultDto <Guid> > ExecuteAsync(long MyUserId, string TargetUsername) { return(await Task.Run(async() => { try { var targetUser = await _context.Users .FirstOrDefaultAsync(u => u.Username.ToLower() == TargetUsername.ToLower()); var myUser = await _context.Users.FindAsync(MyUserId); if (targetUser == null || myUser == null) { return new ResultDto <Guid>() { Status = Common.Enums.ServiceStatus.NotFound, }; } Chatroom oldChatroom = await _context.Chatrooms .Include(c => c.UserInChatrooms) .Where(c => c.ChatroomType == Common.Enums.ChatroomType.PV) .FirstOrDefaultAsync(c => c.UserInChatrooms.Any(u => u.UserId == targetUser.Id) && c.UserInChatrooms.Any(u => u.UserId == MyUserId)); Guid Data = new Guid(); if (oldChatroom != null) { Data = oldChatroom.Guid; } else { Chatroom newChatroom = new Chatroom() { ChatroomType = Common.Enums.ChatroomType.PV, Guid = Guid.NewGuid(), InsertTime = DateTime.Now, }; await _context.Chatrooms.AddAsync(newChatroom); //await _context.SaveChangesAsync(); UserInChatroom myUserInChatroom = new UserInChatroom() { Chatroom = newChatroom, ChatroomId = newChatroom.Id, User = myUser, UserId = myUser.Id }; UserInChatroom targetUserInChatroom = new UserInChatroom() { Chatroom = newChatroom, ChatroomId = newChatroom.Id, User = targetUser, UserId = targetUser.Id }; await _context.UserInChatrooms.AddAsync(myUserInChatroom); await _context.UserInChatrooms.AddAsync(targetUserInChatroom); await _context.SaveChangesAsync(); Data = newChatroom.Guid; } return new ResultDto <Guid>() { Data = Data, Status = Common.Enums.ServiceStatus.Success, }; } catch (Exception) { return new ResultDto <Guid>() { Status = Common.Enums.ServiceStatus.SystemError, }; } })); }
public async Task <ResultDto <JoinedChatDetailDto> > ExecuteAsync(long MyUserId, Guid ChatroomJoinGuid) { return(await Task.Run(async() => { try { var chatroom = await _context.Chatrooms .FirstOrDefaultAsync(c => c.JoinLinkGuid == ChatroomJoinGuid); var user = await _context.Users.FindAsync(MyUserId); #region validation if (chatroom == null || chatroom.ChatroomType == Common.Enums.ChatroomType.PV || user == null) { return new ResultDto <JoinedChatDetailDto>() { Status = Common.Enums.ServiceStatus.NotFound, }; } if (_context.UserInChatrooms.Any(u => u.UserId == MyUserId && u.ChatroomId == chatroom.Id)) { return new ResultDto <JoinedChatDetailDto>() { Status = Common.Enums.ServiceStatus.AccessDenied, }; } #endregion UserInChatroom newUserInChatroom = new UserInChatroom() { Chatroom = chatroom, ChatroomId = chatroom.Id, User = user, UserId = MyUserId }; await _context.UserInChatrooms.AddAsync(newUserInChatroom); Message info = new Message() { Chatroom = chatroom, ChatroomID = chatroom.Id, MessageType = MessageType.Info, SendDate = DateTime.Now, Text = $" {user.Name} به گروه پیوست", }; await _context.Messages.AddAsync(info); await _context.SaveChangesAsync(); JoinedChatDetailDto Data = new JoinedChatDetailDto() { ChatroomName = chatroom.Name, Guid = chatroom.Guid, }; #region find image var chatroomImage = await _context.ChatroomImages .FirstOrDefaultAsync(c => c.ChatroomId == chatroom.Id); string chatroomImageName = "Images/ChatroomImages/Defaut.png"; if (chatroomImage != null) { chatroomImageName = chatroomImage.ImageName; } #endregion Data.ImageName = chatroomImageName; #region find last message var lastmessage = await _context.Messages .Where(m => m.ChatroomID == chatroom.Id) .OrderBy(m => m.SendDate) .LastOrDefaultAsync(); #endregion Data.LastMessage = lastmessage?.Text; Data.LastMessageTime = lastmessage?.SendDate; return new ResultDto <JoinedChatDetailDto>() { Status = Common.Enums.ServiceStatus.Success, Data = Data, }; } catch (Exception) { return new ResultDto <JoinedChatDetailDto>() { Status = Common.Enums.ServiceStatus.SystemError, }; } })); }