public ActionResult DisjointTask(string id, GroomingTaskModel task)
        {
            assignees.Remove(Session["UserId"].ToString());
            Session["JoinedTaskCount"] = Int32.Parse(Session["JoinedTaskCount"].ToString()) - 1;
            if (assignees.Count == 0 || assignees == null)
            {
                task.assignees = assignees;

                var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <GroomingTaskModel> .Update
                             .Set("assignees", assignees)
                             .Set("state", "Unassigned");

                var result = productCollection.UpdateOne(filter, update);

                assignees = new List <string>();
                return(RedirectToAction("Details", new { id = id }));
            }
            else
            {
                task.assignees = assignees;

                var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <GroomingTaskModel> .Update
                             .Set("assignees", assignees);

                var result = productCollection.UpdateOne(filter, update);

                assignees = new List <string>();
                return(RedirectToAction("Details", new { id = id }));
            }
        }
        public ActionResult DeleteComment(string id, GroomingTaskModel task, string comment)
        {
            GroomingTaskModel.Comment comment1 = new GroomingTaskModel.Comment();
            var singletask = productCollection.AsQueryable <GroomingTaskModel>().SingleOrDefault(x => x.Id == new ObjectId(id));

            foreach (var coment in singletask.Comments)
            {
                if (coment.commId == comment)
                {
                    comment1 = coment;
                    // Debug.WriteLine(comment);
                }
            }

            //Debug.WriteLine(comment);
            comments.RemoveAll(l => l.commId == comment);
            // Debug.WriteLine(comments.Count());
            //Debug.WriteLine(comment1.comm);
            var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <GroomingTaskModel> .Update
                         .Set("Comments", comments);

            var result = productCollection.UpdateOne(filter, update);

            return(RedirectToAction("AddComment", new { id = id }));
        }
        public ActionResult Create(GroomingTaskModel groomingTask)
        {
            groomingTask.posterName  = Session["Username"].ToString();
            groomingTask.posterPhoto = Session["Img"].ToString();
            groomingTask.taskType    = "Grooming Task";
            groomingTask.taskName    = "Grooming - " + groomingTask.dogName;


            groomingTask.state = "Unassigned";
            var vol = volunteerCollection.AsQueryable <VolunteerModel>().SingleOrDefault(x => x.Name == groomingTask.requester);

            groomingTask.reqphoto = vol.UserPhoto;
            //    groomingTask.Services = servicesList;


            try
            {
                productCollection.InsertOne(groomingTask);
                //     servicesList = new List<GroomingTaskModel.services>();
                deletedTask = new List <object>();
                deletedTask.Add(groomingTask);
                Session["TaskCount"] = Int32.Parse(Session["TaskCount"].ToString()) + 1;

                return(RedirectToAction("Details", new { id = groomingTask.Id }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult Edit(string id, GroomingTaskModel task)
        {
            try
            {
                var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <GroomingTaskModel> .Update
                             .Set("ImportanceLevel", task.ImportanceLevel)
                             .Set("requester", task.requester)
                             .Set("AdditionalInfo", task.AdditionalInfo)
                             .Set("taskID", task.taskID)
                             .Set("taskName", task.taskName)
                             .Set("taskType", task.taskType)
                             .Set("posterName", task.posterName)
                             .Set("creationDate", task.creationDate)
                             .Set("state", task.state)
                             .Set("dogName", task.dogName)
                             .Set("dogAge", task.dogAge)
                             .Set("dogBreed", task.dogBreed)
                             .Set("dogSize", task.dogSize)
                             //.Set("Services", task.Services)
                             .Set("booked", task.booked)
                             .Set("bookedAddress", task.bookedAddress)
                             .Set("bookedStore", task.bookedStore)
                             .Set("bookedDate", task.bookedDate)
                             .Set("bookedTime", task.bookedTime)
                             .Set("prefStore", task.prefStore)
                             .Set("prefAddress", task.prefAddress)
                             .Set("prefDate", task.prefDate)
                             .Set("paid", task.paid)
                             .Set("price", task.price)
                             .Set("payer", task.payer)
                             .Set("receipt", task.receipt);

                var result = productCollection.UpdateOne(filter, update);
                deletedTask = new List <object>();
                task.Id     = ObjectId.Parse(id);
                deletedTask.Add(task);

                // servicesList = new List<GroomingTaskModel.services>();

                return(RedirectToAction("Details", new { id = id }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult JoinTask(string id, GroomingTaskModel task)
        {
            assignees.Add(Session["UserId"].ToString());
            task.assignees = assignees;

            var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <GroomingTaskModel> .Update
                         .Set("assignees", assignees)
                         .Set("state", "Assigned");

            var result = productCollection.UpdateOne(filter, update);

            Session["JoinedTaskCount"] = Int32.Parse(Session["JoinedTaskCount"].ToString()) + 1;
            assignees = new List <string>();
            return(RedirectToAction("Details", new { id = id }));
        }
        public ActionResult AddComment(string id, GroomingTaskModel task)
        {
            scomm.volunteerId    = Session["UserId"].ToString();
            scomm.comm           = task.singleComm;
            scomm.volunteerName  = Session["Username"].ToString();
            scomm.volunteerPhoto = Session["Img"].ToString();
            comments             = new List <GroomingTaskModel.Comment>();

            var singletask = productCollection.AsQueryable <GroomingTaskModel>().SingleOrDefault(x => x.Id == new ObjectId(id));

            if (singletask.Comments == null || singletask.Comments.Count() == 0)
            {
                comments     = new List <GroomingTaskModel.Comment>();
                scomm.commId = "1";
            }
            else
            {
                List <int> ids = new List <int>();
                foreach (var coment in singletask.Comments)
                {
                    comments.Add(coment);
                    ids.Add(Int32.Parse(coment.commId));
                }
                scomm.commId = (ids.Max() + 1).ToString();
            }

            comments.Add(scomm);
            // task.singleComm = "";
            var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <GroomingTaskModel> .Update
                         .Set("Comments", comments)

                         .Set("singleComm", "");

            var result = productCollection.UpdateOne(filter, update);

            return(RedirectToAction("AddComment", new { id = id }));
            //return RedirectToAction("Details", new { id = id });
        }
        public ActionResult CompleteTask(string id, GroomingTaskModel task)
        {
            var filter = Builders <GroomingTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <GroomingTaskModel> .Update
                         .Set("state", "Completed");

            var result = productCollection.UpdateOne(filter, update);

            if (Session["Role"].ToString() == "Admin" || Session["Role"].ToString() == "Moderator")
            {
                Session["TaskCount"] = Int32.Parse(Session["TaskCount"].ToString()) - 1;
                //  Session["JoinedTaskCount"] = Int32.Parse(Session["JoinedTaskCount"].ToString()) - 1;

                Session["CompletedTaskCount"] = Int32.Parse(Session["CompletedTaskCount"].ToString()) + 1;
                return(RedirectToAction("../CompletedTasks/Index"));
            }
            else
            {
                return(RedirectToAction("../AllTasks/Index"));
            }
        }