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

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

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

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

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

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

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

                assignees = new List <string>();
                return(RedirectToAction("Details", new { id = id }));
            }
        }
        public ActionResult Create(TransportationTaskModel transportationTask)
        {
            transportationTask.posterName  = Session["Username"].ToString();
            transportationTask.posterPhoto = Session["Img"].ToString();
            transportationTask.taskType    = "Transportation Task";
            transportationTask.taskName    = transportationTask.taskType + " - " + transportationTask.PUCity + " to " + transportationTask.DOCity;

            transportationTask.Items        = itemList;
            transportationTask.creationDate = DateTime.Today;
            //transportationTask.assignees = "0";
            transportationTask.state = "Unassigned";
            var vol = volunteerCollection.AsQueryable <VolunteerModel>().SingleOrDefault(x => x.Name == transportationTask.Requester);

            transportationTask.reqPhoto = vol.UserPhoto;


            try
            {
                productCollection.InsertOne(transportationTask);
                deletedTask = new List <object>();
                deletedTask.Add(transportationTask);

                itemList             = new List <TransportationTaskModel.Item>();
                Session["TaskCount"] = Int32.Parse(Session["TaskCount"].ToString()) + 1;
                return(RedirectToAction("Details", new { id = transportationTask.Id }));
            }
            catch
            {
                return(View());
            }
        }
        public ActionResult Edit(string id, TransportationTaskModel task)
        {
            task.Items = itemList;
            try
            {
                var filter = Builders <TransportationTaskModel> .Filter.Eq("_id", ObjectId.Parse(id));

                var update = Builders <TransportationTaskModel> .Update
                             .Set("ImportanceLevel", task.ImportanceLevel)
                             .Set("Requester", task.Requester)
                             .Set("PUAddress", task.PUAddress)
                             .Set("PUCity", task.PUCity)
                             .Set("PUPostal", task.PUPostal)
                             .Set("PUName", task.PUName)
                             .Set("PUDate", task.PUDate)
                             .Set("PUTime", task.PUTime)
                             .Set("PUAdditional", task.PUAdditional)
                             .Set("DOAddress", task.DOAddress)
                             .Set("DOCity", task.DOCity)
                             .Set("DOPostal", task.DOPostal)
                             .Set("DOName", task.DOName)
                             .Set("DODate", task.DODate)
                             .Set("DOTime", task.DOTime)
                             .Set("DOAdditional", task.DOAdditional)
                             .Set("AdditionalInfo", task.AdditionalInfo)
                             .Set("Items", task.Items)
                             .Set("taskID", task.taskID)
                             .Set("taskName", task.taskName)
                             .Set("taskType", task.taskType)
                             .Set("posterName", task.posterName)
                             .Set("creationDate", task.creationDate)
                             .Set("state", task.state);

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

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

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

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

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

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