public ActionResult DeleteComment(string id, InventoryTaskModel task, string comment)
        {
            InventoryTaskModel.Comment comment1 = new InventoryTaskModel.Comment();
            var singletask = productCollection.AsQueryable <InventoryTaskModel>().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 <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

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

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

            return(RedirectToAction("AddComment", new { id = id }));
        }
        public ActionResult DisjointTask(string id, InventoryTaskModel 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 <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <InventoryTaskModel> .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 <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

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

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

                assignees = new List <string>();
                return(RedirectToAction("Details", new { id = id }));
            }
        }
        public ActionResult Create(InventoryTaskModel inventoryTask)
        {
            inventoryTask.posterName  = Session["Username"].ToString();
            inventoryTask.posterPhoto = Session["Img"].ToString();
            inventoryTask.taskType    = "Inventory Task";
            inventoryTask.taskName    = inventoryTask.taskType + " - " + inventoryTask.address;
            var vol = volunteerCollection.AsQueryable <VolunteerModel>().SingleOrDefault(x => x.Name == inventoryTask.requester);

            inventoryTask.reqPhoto = vol.UserPhoto;

            inventoryTask.state = "Unassigned";

            inventoryTask.FileList = documentsList;


            try
            {
                productCollection.InsertOne(inventoryTask);

                deletedTask = new List <object>();
                deletedTask.Add(inventoryTask);
                documentsList        = new List <string>();
                Session["TaskCount"] = Int32.Parse(Session["TaskCount"].ToString()) + 1;
                return(RedirectToAction("Details", new { id = inventoryTask.Id }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult Edit(string id, InventoryTaskModel task)
        {
            task.FileList    = documentsList;
            task.posterName  = Session["Username"].ToString();
            task.posterPhoto = Session["Img"].ToString();
            task.taskType    = "Inventory Task";
            task.taskName    = task.taskType + " - " + task.address;
            task.requester   = "Ellie";

            task.state = "Unassigned";
            try
            {
                var filter = Builders <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <InventoryTaskModel> .Update

                             .Set("ImportanceLevel", task.ImportanceLevel)
                             .Set("requester", task.requester)
                             .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("address", task.address)
                             .Set("taskDate", task.taskDate)
                             .Set("taskTime", task.taskTime)
                             .Set("AdditionalInfo", task.AdditionalInfo)
                             .Set("FileList", task.FileList);;
                var result = productCollection.UpdateOne(filter, update);
                deletedTask = new List <object>();
                task.Id     = ObjectId.Parse(id);
                deletedTask.Add(task);

                documentsList = new List <string>();

                return(RedirectToAction("Details", new { id = id }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult AddComment(string id, InventoryTaskModel task)
        {
            scomm.volunteerId    = Session["UserId"].ToString();
            scomm.comm           = task.singleComm;
            scomm.volunteerName  = Session["Username"].ToString();
            scomm.volunteerPhoto = Session["Img"].ToString();
            comments             = new List <InventoryTaskModel.Comment>();

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

            if (singletask.Comments == null || singletask.Comments.Count() == 0)
            {
                comments     = new List <InventoryTaskModel.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 <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <InventoryTaskModel> .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, InventoryTaskModel task)
        {
            var filter = Builders <InventoryTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

            var update = Builders <InventoryTaskModel> .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"));
            }
        }