public void SendMessage(string messageText, int userID, int chatID) { using CloudWorkContext context = new CloudWorkContext(); //int[] userIDs = { firstUserID, secondUserID }; if (string.IsNullOrEmpty(messageText)) { ResponseBuilder.throwError("შეიყვანეთ მესიჯის ტექსტი"); } if (chatID > 0 && ChatExists(userID, chatID)) { var fromUserName = context.Users.Where(x => x.ID == userID).Select(x => x.fullname).FirstOrDefault().ToString(); //var secondUserName = context.Users.Where(x => x.ID == secondUserID).Select(x => x.fullname).FirstOrDefault().ToString(); var newMessageObj = new tbMessages() { chatID = chatID, fromUserID = userID, fromUserName = fromUserName, message = messageText, read = 0, createDate = DateTime.Now }; context.Messages.Add(newMessageObj); tbChats newChatObj = GetChat(userID, chatID); newChatObj.lastMessage = messageText; newChatObj.lastMessageDate = DateTime.Now; context.Chats.Update(newChatObj); context.SaveChanges(); } else { ResponseBuilder.throwError("ჩატი არ არსებობს"); } }
public tbChats CreateOrGetChat(int firstUserID, int secondUserID, string name = null) { using CloudWorkContext context = new CloudWorkContext(); int[] userIDs = { firstUserID, secondUserID }; int chatID = 0; tbChats chat = new tbChats(); chatID = context.Chats.Where(x => userIDs.Contains(x.firstUserID) && userIDs.Contains(x.secondUserID)).Select(x => x.ID).FirstOrDefault(); if (chatID == 0) { var firstUserName = context.Users.Where(x => x.ID == firstUserID).Select(x => x.fullname).FirstOrDefault().ToString(); var secondUserName = context.Users.Where(x => x.ID == secondUserID).Select(x => x.fullname).FirstOrDefault().ToString(); var newChatObj = new tbChats() { firstUserID = firstUserID, firstUserName = firstUserName, secondUserName = secondUserName, secondUserID = secondUserID, Name = name, createDate = DateTime.Now }; context.Chats.Add(newChatObj); context.SaveChanges(); chat = newChatObj; chat.Name = getChatName(firstUserID, chat); } else { chat = GetChat(firstUserID, chatID); } return(chat); }
public string getUserEmail(int userID) { using CloudWorkContext context = new CloudWorkContext(); var userEmail = context.Users.Where(a => a.ID == userID).Select(x => x.email).FirstOrDefault(); return(userEmail); }
public ProjectDetails GetProject(int projectId, int userId) { using CloudWorkContext context = new CloudWorkContext(); var project = context.V_Projects. Where(c => c.ID == projectId && (c.userId == userId || c.workerUserId == userId)). Select(x => new ProjectDetails() { ID = x.ID, projectName = x.projectName, projectType = x.projectType, projectDescription = x.projectDescription, projectCategory = x.projectCategory, budget = x.budget, status = x.status, statusText = x.statusText, userId = x.userId, workerUserId = x.workerUserId, startDate = x.startDate, workerFullName = x.workerFullName, endDate = x.endDate, doneRequested = x.doneRequested, doneRequestDate = x.doneRequestDate }).FirstOrDefault(); return(project); }
public IQueryable <tbProjects> GetProjects() { using CloudWorkContext context = new CloudWorkContext(); var projects = context.Projects.Select(x => x).Where(c => c.ID > 0); return(projects); }
public tbProjects ProjectDoneOwner(tbProjects project) { using CloudWorkContext context = new CloudWorkContext(); //var bid = context.ProjectBids.FirstOrDefault(b => b.ID == bidId); var thisProject = context.Projects.Where(a => a.ID == project.ID && a.userId == project.userId).FirstOrDefault(); if (thisProject == null || thisProject.ID == 0) { ResponseBuilder.throwError("თქვენ არ გაქვთ ამ პროექტზე ცვლილებების უფლება"); } if (thisProject.status != 1) { ResponseBuilder.throwError("იმისთვის რომ დაასრულოთ პროოექტი სტატუსი უნდა იყოს მიმდინარე"); } if (thisProject.doneRequested == 0) { ResponseBuilder.throwError("ამ პროექტზე დასრულების მოთხოვნა ჯერ არ გაკეთებულა"); } thisProject.status = 2; thisProject.doneDate = DateTime.Now; context.SaveChanges(); return(thisProject); }
public tbChats GetChat(int userID, int chatID) { using CloudWorkContext context = new CloudWorkContext(); var chat = context.Chats.Where(x => x.ID == chatID).FirstOrDefault(); chat.Name = getChatName(userID, chat); return(chat); }
public bool ChatExists(int userID, int chatID) { using CloudWorkContext context = new CloudWorkContext(); var chatExists = 0; chatExists = context.Chats.Count(x => x.ID == chatID && (x.firstUserID == userID || x.secondUserID == userID)); return(chatExists > 0); }
public List <int> getUnreadChatIDs(int userID) { using CloudWorkContext context = new CloudWorkContext(); List <int> chatIDs = context.Chats.Where(x => x.firstUserID == userID || x.secondUserID == userID).Select(a => a.ID).ToList(); List <int> unreadChatIds = new List <int>(); unreadChatIds = context.Messages.Where(a => a.read == 0 && chatIDs.Contains(a.chatID) && a.fromUserID != userID).Select(a => a.chatID).Distinct().ToList(); return(unreadChatIds); }
public List <tbChats> GetRecentChats(int userID) { using CloudWorkContext context = new CloudWorkContext(); List <tbChats> chats = context.Chats.Where(x => x.firstUserID == userID || x.secondUserID == userID).OrderByDescending(x => x.lastMessageDate).ToList(); chats.ForEach(x => { x.Name = getChatName(userID, x); }); return(chats); }
public bool CanContact(int userID, int chatUserID) { using CloudWorkContext context = new CloudWorkContext(); var hasAcceptedProjects = context.Projects.Count(x => (x.userId == userID && x.workerUserId == chatUserID) || (x.userId == chatUserID && x.workerUserId == userID)); if (hasAcceptedProjects > 0) { return(true); } else { return(false); } }
public void MarkAsRead(int userID, int chatID, int messageID) { using CloudWorkContext context = new CloudWorkContext(); var prevMessages = new List <tbMessages>(); var chatCount = 0; chatCount = context.Chats.Count(x => x.ID == chatID && (x.firstUserID == userID || x.secondUserID == userID)); if (chatCount > 0) { prevMessages = context.Messages.Where(x => x.ID <= messageID && x.chatID == chatID && x.fromUserID != userID && x.read == 0).ToList(); if (prevMessages != null && prevMessages.Count > 0) { var updated = prevMessages.Select(x => { x.read = 1; x.readDate = DateTime.Now; return(x); }); context.Messages.UpdateRange(updated); context.SaveChanges(); } } }
public void BidProject(tbProjectBids projectBid) { using CloudWorkContext context = new CloudWorkContext(); if (context.ProjectBids.Count(pb => pb.userID == projectBid.userID && pb.projectID == projectBid.projectID) > 0) { ResponseBuilder.throwError("თქვენ უკვე გაგზავნილი გაქვთ შეთავაზება"); } if (context.Projects.Count(p => p.ID == projectBid.projectID && p.userId == projectBid.userID) > 0) { ResponseBuilder.throwError("თქვენივე დადებულ პროექტზე შეთავაზებას ვერ გააგზავნით"); } var project = context.Projects.Where(x => x.ID == projectBid.projectID).FirstOrDefault(); int projectOwnerID = project.userId; string projectOwnerEmail = new PKG_USERS().getUserEmail(projectOwnerID); context.ProjectBids.Add(projectBid); context.SaveChanges(); new EmailService().SendEmail(projectOwnerEmail, "ახალი შემოთავაზება", "თქვენ გაქვთ ახალი შემოთავაზება პროექტზე <b>" + project.name + "</b>"); }
public List <tbMessages> GetMessages(int userID, int chatID) { using CloudWorkContext context = new CloudWorkContext(); if (!ChatExists(userID, chatID)) { ResponseBuilder.throwError("ჩატი არ მოიძებნა."); return(null); } var messagesAll = new List <tbMessages>(); try { messagesAll = context.Messages.Where(x => x.chatID == chatID).OrderBy(x => x.ID).ToList(); } catch (Exception ex) { messagesAll = new List <tbMessages>(); } return(messagesAll); }
public void AcceptBid(int bidId, int userId) { using CloudWorkContext context = new CloudWorkContext(); var bid = context.ProjectBids.FirstOrDefault(b => b.ID == bidId); var project = context.Projects.Where(a => a.ID == bid.projectID && a.userId == userId).FirstOrDefault(); if (project == null || project.ID == 0) { ResponseBuilder.throwError("თქვენ არ გაქვთ ამ პროექტზე ცვლილებების უფლება"); } if (project.status != 0) { ResponseBuilder.throwError("იმისთვის რომ დაეთანხმოთ შეთავაზებას პროოექტის სტატუსი უნდა იყოს ღია"); } var bidsToRefuse = context.ProjectBids.Where(x => x.projectID == bid.projectID).ToList(); // Changes here project.status = 1; // 0 ღია, 1 მიმდინარე, 2 დასრულებული project.workerUserId = bid.userID; bidsToRefuse.ForEach(x => x.status = 2); // refuse all bid.status = 1; // 0 - მოლოდინში, 1 - დადასტურებული, 2 - უარყოფილი //context.ProjectBids.Update(bid); //context.Projects.Update(project); context.SaveChanges(); var users = new PKG_USERS(); string workerEmail = users.getUserEmail(Convert.ToInt32(project.workerUserId)); string ownerEmail = users.getUserEmail(Convert.ToInt32(project.userId)); new EmailService().SendEmail(workerEmail, "დამსაქმებელი დაეთანხმა თქვენ შეთავაზებას", "თქვენი შეტავაზება პროექტზე მიღებულია. შეგიძლიათ დაეკონტაქტოთ დამსაქმებელს ჩვენი პორტალიდან <br />პროექტი:<h1><a href='http://cloudwork.ge/ProjectDetails/'" + project.ID + ">" + project.name + "</a></h1>"); new EmailService().SendEmail(ownerEmail, "პროექტის დაწყება", "თქვენ დაეთანხმეთ ფრილანსერის შემოთავაზებას <a href='http://cloudwork.ge/ProjectDetails/'" + project.ID + ">" + project.name + "</a>"); }
public PKG_MESSAGES() { cwContext = new CloudWorkContext(); }