示例#1
0
        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("ჩატი არ არსებობს");
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        public IQueryable <tbProjects> GetProjects()
        {
            using CloudWorkContext context = new CloudWorkContext();
            var projects = context.Projects.Select(x => x).Where(c => c.ID > 0);

            return(projects);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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();
                }
            }
        }
示例#13
0
        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>");
        }
示例#14
0
        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);
        }
示例#15
0
        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>");
        }
示例#16
0
 public PKG_MESSAGES()
 {
     cwContext = new CloudWorkContext();
 }