public ActionResult EditProcess(FormCollection editData)
        {
            int editId = int.Parse(editData["editProcessId"]);

            using (HFContext hfdb = new HFContext())
            {
                Process editProcess = hfdb.Processes.Find(editId);

                int[] processTechIds = null;

                if (editData["Technologies"] != null)
                {
                    processTechIds = editData["Technologies"].Split(',').Select(tIds => int.Parse(tIds)).ToArray();
                }

                editProcess.Technologies = string.Empty;

                for (int i = 0; i < processTechIds.Length; ++i)
                {
                    Technology pTech = hfdb.Technologies.Find(processTechIds[i]);
                    editProcess.Technologies += pTech.Name + ((i != processTechIds.Length - 1) ? ", " : "");
                }

                editProcess.Name      = editData["Name"];
                editProcess.Seniority = (SeniorityLevel)int.Parse(editData["Seniority"]);

                hfdb.SaveChanges();
            }

            return(RedirectToAction("ProcessMgmt"));
        }
        // ako je hfdb null ne uzima tehnologije (za slucajeve gde mi ne trebaju)
        public static UserInfo ConvertUser(User usr, HFContext hfdb = null)
        {
            ICollection <TechnologyInfo> uTechInfos = null;

            if (hfdb != null)
            {
                hfdb.Users.Attach(usr);

                uTechInfos =
                    (from uTech in usr.Technologies
                     select new TechnologyInfo
                {
                    Name = uTech.Name
                }).ToList();
            }

            return(new UserInfo
            {
                Id = usr.Id,
                FirstName = usr.FirstName,
                LastName = usr.LastName,
                Email = usr.Email,
                Seniority = usr.Seniority,
                Role = usr.Role,
                Technologies = uTechInfos
            });
        }
        public ActionResult EditUser(FormCollection editData)
        {
            int editUserId = int.Parse(editData["editUserId"]);

            using (HFContext hfdb = new HFContext())
            {
                User editUser = hfdb.Users.Find(editUserId);

                if (editData["Technologies"] != null)
                {
                    int[] userTechIds = editData["Technologies"].Split(',').Select(tIds => int.Parse(tIds)).ToArray();

                    editUser.Technologies.Clear();
                    foreach (int tId in userTechIds)
                    {
                        Technology uTech = hfdb.Technologies.Find(tId);
                        editUser.Technologies.Add(uTech);
                    }
                }

                editUser.FirstName = editData["FirstName"];
                editUser.LastName  = editData["LastName"];
                editUser.Email     = editData["Email"];
                editUser.Seniority = (SeniorityLevel)int.Parse(editData["Seniority"]);
                editUser.Role      = (UserLevel)int.Parse(editData["Role"]);

                hfdb.SaveChanges();
            }

            return(RedirectToAction("UserMgmt"));
        }
        public ActionResult NewProcess(FormCollection newData)
        {
            int addedId = 0;

            using (HFContext hfdb = new HFContext())
            {
                string processTechs = string.Empty;

                if (newData["Technologies"] != null)
                {
                    int[] processTechIds = newData["Technologies"].Split(',').Select(tIds => int.Parse(tIds)).ToArray();

                    for (int i = 0; i < processTechIds.Length; ++i)
                    {
                        Technology pTech = hfdb.Technologies.Find(processTechIds[i]);
                        processTechs += pTech.Name + ((i != processTechIds.Length - 1) ? ", " : "");
                    }
                }

                Process newProcess = new Process
                {
                    Name         = newData["Name"],
                    Technologies = processTechs,
                    Seniority    = (SeniorityLevel)int.Parse(newData["Seniority"]),
                    StartDate    = DateTime.Now
                };

                hfdb.Processes.Add(newProcess);
                hfdb.SaveChanges();

                addedId = newProcess.Id;
            }

            return(RedirectToAction("ProcessDetails", new { Id = addedId }));
        }
        public ActionResult PostContactComment(FormCollection commentData)
        {
            int     contactId       = int.Parse(commentData["commentContactId"]);
            int     authorId        = int.Parse(commentData["commentAuthorId"]);
            Contact commentReceiver = null;
            User    commentAuthor   = null;

            using (HFContext hfdb = new HFContext())
            {
                commentReceiver = hfdb.Contacts.Find(contactId);
                commentAuthor   = hfdb.Users.Find(authorId);

                commentReceiver.Comments.Add(new Annotation
                {
                    Message = commentData["Message"],
                    Time    = DateTime.Now,
                    Type    = Phase.Contact_Comment,
                    Hidden  = bool.Parse(commentData["Hidden"] ?? "false"),
                    Author  = commentAuthor
                });

                hfdb.SaveChanges();
            }

            return(RedirectToRoute("Default", new { controller = "Contacts", action = "ContactDetails", Id = commentReceiver.Id }));
        }
Пример #6
0
        public JsonResult GetAverageStatusTime()
        {
            Phase status       = Phase.Contact_Phase;
            bool  statusExists = false;

            if (Request.Form["status"] != string.Empty)
            {
                status       = (Phase)int.Parse(Request.Form["status"]);
                statusExists = true;
            }

            double avgStatTime = 0.0;

            if (statusExists)
            {
                using (HFContext hfdb = new HFContext())
                {
                    ICollection <ProcessInstance> processInstances = (from pIns in hfdb.ProcessInstances
                                                                      where PhaseFinished(pIns, status)
                                                                      select pIns).ToList();

                    avgStatTime = processInstances.Average(pIns => CalculateStatusTime(pIns, status));
                }
            }

            var data = new
            {
                avgStatusTime = avgStatTime
            };

            return(Json(data));
        }
Пример #7
0
        public JsonResult GetTestInstances(int processId, int userId)
        {
            ICollection <ProcessInstanceInfo> tests = null;

            using (HFContext hfdb = new HFContext())
            {
                tests = (from pIns in hfdb.ProcessInstances
                         where (pIns.ProcessId == processId || (processId == 0 && userId == 0 && pIns.InstanceOf.EndDate == null) ||
                                (processId == 0 && pIns.InstanceOf.EndDate == null && userId != 0 &&
                                 pIns.Interviewers.FirstOrDefault(intw => intw.InterviewerId == userId) != null)) &&
                         !pIns.ContactInProcess.Deleted && pIns.CurrentPhase == Phase.Test_Phase
                         select new ProcessInstanceInfo
                {
                    Id = pIns.Id,
                    ProcessName = pIns.InstanceOf.Name,
                    ContactName = pIns.ContactInProcess.FirstName + " " + pIns.ContactInProcess.LastName,
                    ProcessSeniority = pIns.InstanceOf.Seniority.ToString(),
                    ProcessTechnologies = pIns.InstanceOf.Technologies,
                    ContactSeniority = pIns.ContactInProcess.Seniority.ToString(),
                    ContactTechnologies = from cTech in pIns.ContactInProcess.Technologies
                                          select " " + cTech.Name
                }).ToList();
            }

            return(Json(tests));
        }
        public FileResult OpenContactCV(int Id)
        {
            using (HFContext hfdb = new HFContext())
            {
                Contact cvContact = hfdb.Contacts.Find(Id);

                return(File(cvContact.CVContent, cvContact.CVContentType));
            }
        }
Пример #9
0
        public IEnumerable <HistoricEvent> GetAllTours()
        {
            IEnumerable <HistoricEvent> tours;

            using (HFContext db = new HFContext())
            {
                tours = db.Events.OfType <HistoricEvent>().ToList().OrderBy(t => t.EventId);
            }
            return(tours);
        }
Пример #10
0
        public HistoricEvent GetTour(int eventID)
        {
            HistoricEvent tour;

            using (HFContext db = new HFContext())
            {
                tour = db.Events.OfType <HistoricEvent>().Where(tr => tr.EventId == eventID).FirstOrDefault();
            }
            return(tour);
        }
        public JsonResult GetContactsForProcess([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            IQueryable <Contact> query = null;
            int totalCount             = 0;
            int filteredCount          = 0;
            int processId = int.Parse(Request.Form["processId"]);

            using (HFContext hfdb = new HFContext())
            {
                query = from con in hfdb.Contacts
                        where (!con.Deleted && con.Instances.FirstOrDefault(pIns =>
                                                                            pIns.ProcessId == processId && pIns.CurrentPhase == null) != null)
                        select con;

                totalCount = query.Count();

                if (requestModel.Search.Value != string.Empty)
                {
                    string value = requestModel.Search.Value.Trim();
                    query = query.Where(con => con.FirstName.Contains(value) ||
                                        con.LastName.Contains(value) ||
                                        con.Email.Contains(value) ||
                                        con.Technologies.FirstOrDefault(tech => tech.Name.Contains(value)) != null
                                        );
                }

                filteredCount = query.Count();

                IOrderedEnumerable <Column> sortedColumns = requestModel.Columns.GetSortedColumns();
                string orderByString = string.Empty;

                foreach (Column column in sortedColumns)
                {
                    orderByString += orderByString != string.Empty ? "," : "";
                    orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc");
                }

                query = query.OrderBy(orderByString == string.Empty ? "FirstName asc" : orderByString);
                query = query.Skip(requestModel.Start).Take(requestModel.Length);

                var data = query.Select(con =>
                                        new {
                    Id           = con.Id,
                    FirstName    = con.FirstName + " " + con.LastName,
                    Location     = con.Location,
                    Email        = con.Email,
                    Phone        = con.Phone,
                    Seniority    = con.Seniority.ToString(),
                    Technologies = from tech in con.Technologies
                                   select " " + tech.Name
                }).ToList();

                return(Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount)));
            }
        }
        public ActionResult DeleteUser(int Id)
        {
            using (HFContext hfdb = new HFContext())
            {
                User deleteUser = hfdb.Users.Find(Id);

                deleteUser.Deleted = true;
                hfdb.SaveChanges();
            }

            return(RedirectToAction("UserMgmt"));
        }
        public ActionResult DeleteContact(int Id)
        {
            using (HFContext hfdb = new HFContext())
            {
                Contact deleteContact = hfdb.Contacts.Find(Id);
                deleteContact.Deleted = true;

                hfdb.SaveChanges();
            }

            return(RedirectToAction("ContactMgmt"));
        }
        public JsonResult GetUserData([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            IQueryable <User> query = null;
            int totalCount          = 0;
            int filteredCount       = 0;

            using (HFContext hfdb = new HFContext())
            {
                query = from user in hfdb.Users
                        where user.Deleted == false
                        select user;

                totalCount = query.Count();

                if (requestModel.Search.Value != string.Empty)
                {
                    string value = requestModel.Search.Value.Trim();
                    query = query.Where(user => user.FirstName.Contains(value) ||
                                        user.LastName.Contains(value) ||
                                        user.Email.Contains(value) ||
                                        user.Technologies.FirstOrDefault(tech => tech.Name.Contains(value)) != null
                                        );
                }

                filteredCount = query.Count();

                IOrderedEnumerable <Column> sortedColumns = requestModel.Columns.GetSortedColumns();
                string orderByString = string.Empty;

                foreach (Column column in sortedColumns)
                {
                    orderByString += orderByString != string.Empty ? "," : "";
                    orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc");
                }

                query = query.OrderBy(orderByString == string.Empty ? "LastName asc" : orderByString);
                query = query.Skip(requestModel.Start).Take(requestModel.Length);

                var data = query.Select(user =>
                                        new {
                    Id           = user.Id,
                    FirstName    = user.FirstName + " " + user.LastName,
                    Email        = user.Email,
                    Seniority    = user.Seniority.ToString(),
                    Role         = user.Role.ToString(),
                    Technologies = from tech in user.Technologies
                                   select " " + tech.Name
                }).ToList();

                return(Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount)));
            }
        }
        public ActionResult UserDetails(int Id)
        {
            User     detailUser     = null;
            UserInfo detailUserView = null;

            using (HFContext hfdb = new HFContext())
            {
                detailUser     = hfdb.Users.Find(Id);
                detailUserView = ModelConverter.ConvertUser(detailUser, hfdb);
            }

            return(View(detailUserView));
        }
        public ActionResult ContactDetails(int Id)
        {
            Contact     detailContact     = null;
            ContactInfo detailContactView = null;

            using (HFContext hfdb = new HFContext())
            {
                detailContact     = hfdb.Contacts.Find(Id);
                detailContactView = ModelConverter.ConvertContact(detailContact);
            }

            return(View(detailContactView));
        }
        public JsonResult DeletePhaseComment()
        {
            int deleteCommentId = int.Parse(Request.Form["deleteCommentId"]);

            using (HFContext hfdb = new HFContext())
            {
                Annotation deleteAnnotation = hfdb.Annotations.Find(deleteCommentId);
                hfdb.Annotations.Remove(deleteAnnotation);

                hfdb.SaveChanges();
            }

            return(Json(new { success = true }));
        }
        public JsonResult EditPhaseComment()
        {
            int editCommentId = int.Parse(Request.Form["editCommentId"]);

            using (HFContext hfdb = new HFContext())
            {
                Annotation editComment = hfdb.Annotations.Find(editCommentId);
                editComment.Message = Request.Form["editCommentText"];

                hfdb.SaveChanges();
            }

            return(Json(new { success = true }));
        }
Пример #19
0
        public JsonResult GetProcessMonthlyMetrics()
        {
            SeniorityLevel seniority       = SeniorityLevel.Entry;
            bool           seniorityExists = false;

            if (Request.Form["seniority"] != string.Empty)
            {
                seniority       = (SeniorityLevel)int.Parse(Request.Form["seniority"]);
                seniorityExists = true;
            }

            string technology = Request.Form["technology"];
            int    month      = int.Parse(Request.Form["month"]);
            int    year       = int.Parse(Request.Form["year"]);

            DateTime start = new DateTime(year, month, 1);
            DateTime end   = new DateTime(year, month, DateTime.DaysInMonth(year, month));

            int acceptsNumber = 0, processesNumber = 0;

            using (HFContext hfdb = new HFContext())
            {
                ICollection <Process> processes = (from proc in hfdb.Processes
                                                   where ((start <= proc.StartDate && end >= proc.StartDate) ||
                                                          (start >= proc.StartDate && start <= proc.EndDate)) &&
                                                   ((seniorityExists && proc.Seniority == seniority) || proc.Technologies.Contains(technology))
                                                   select proc).ToList();

                processesNumber = processes.Count;

                foreach (Process proc in processes)
                {
                    foreach (ProcessInstance pIns in proc.Instances)
                    {
                        if (pIns.CurrentPhase == Phase.Acceptance_Phase)
                        {
                            ++acceptsNumber;
                        }
                    }
                }
            }

            var data = new
            {
                acceptsNumber   = acceptsNumber,
                processesNumber = processesNumber
            };

            return(Json(data));
        }
        public JsonResult GetContactProcessData([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            IQueryable <Process> query = null;
            int totalCount             = 0;
            int filteredCount          = 0;
            int contactId = int.Parse(Request.Form["contactId"]);

            using (HFContext hfdb = new HFContext())
            {
                query = from proc in hfdb.Processes
                        where proc.Instances.FirstOrDefault(pIns => pIns.ContactId == contactId) != null
                        select proc;

                totalCount = query.Count();

                if (requestModel.Search.Value != string.Empty)
                {
                    string value = requestModel.Search.Value.Trim();
                    query = query.Where(p => p.Name.Contains(value) ||
                                        p.Technologies.Contains(value)
                                        );
                }

                filteredCount = query.Count();

                IOrderedEnumerable <Column> sortedColumns = requestModel.Columns.GetSortedColumns();
                string orderByString = string.Empty;

                foreach (Column column in sortedColumns)
                {
                    orderByString += orderByString != string.Empty ? "," : "";
                    orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc");
                }

                query = query.OrderBy(orderByString == string.Empty ? "StartDate asc" : orderByString);
                query = query.Skip(requestModel.Start).Take(requestModel.Length);

                var data = query.Select(process =>
                                        new {
                    Id           = process.Id,
                    Name         = process.Name,
                    Technologies = process.Technologies,
                    Seniority    = process.Seniority.ToString(),
                    Year         = ((process.EndDate.Value != null) ? process.EndDate.Value.Year : process.StartDate.Year) + " ",
                    EndDate      = process.EndDate.Value.Day + "." + process.EndDate.Value.Month + "." + process.EndDate.Value.Year + "."
                }).ToList();

                return(Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount)));
            }
        }
        public JsonResult MarkToDoItem()
        {
            int toDoItemId = int.Parse(Request.Form["toDoItemId"]);

            using (HFContext hfdb = new HFContext())
            {
                ToDoItem markToDo = hfdb.ToDoItems.Find(toDoItemId);
                markToDo.Completed = true;

                hfdb.SaveChanges();
            }

            return(Json(new { success = true }));
        }
        public JsonResult EndProcess()
        {
            int processId = int.Parse(Request.Form["processId"]);

            using (HFContext hfdb = new HFContext())
            {
                Process endProcess = hfdb.Processes.Find(processId);
                endProcess.EndDate = DateTime.Now;

                hfdb.SaveChanges();
            }

            return(Json(new { success = true }));
        }
        public ActionResult DeleteContactComment(int Id)
        {
            int contactId = 0;

            using (HFContext hfdb = new HFContext())
            {
                Annotation deleteAnnotation = hfdb.Annotations.Find(Id);
                contactId = (int)deleteAnnotation.ContactId;

                hfdb.Annotations.Remove(deleteAnnotation);

                hfdb.SaveChanges();
            }

            return(RedirectToAction("ContactDetails", "Contacts", new { Id = contactId }));
        }
Пример #24
0
        public JsonResult GetProcessInstanceId()
        {
            int contactId = int.Parse(Request.Form["contactId"]);
            int processId = int.Parse(Request.Form["processId"]);

            int pInstanceId = 0;

            using (HFContext hfdb = new HFContext())
            {
                pInstanceId = (from pIns in hfdb.ProcessInstances
                               where pIns.ContactId == contactId && pIns.ProcessId == processId
                               select pIns.Id).SingleOrDefault();
            }

            return(Json(new { pInsId = pInstanceId }));
        }
        public ActionResult NewContact(FormCollection newData)
        {
            using (HFContext hfdb = new HFContext())
            {
                ICollection <Technology> contactTechs = new Collection <Technology>();

                if (newData["Technologies"] != null)
                {
                    int[] contactTechIds = newData["Technologies"].Split(',').Select(tIds => int.Parse(tIds)).ToArray();

                    foreach (int tId in contactTechIds)
                    {
                        Technology cTech = hfdb.Technologies.Find(tId);
                        contactTechs.Add(cTech);
                    }
                }

                Contact newContact = new Contact
                {
                    FirstName        = newData["FirstName"],
                    LastName         = newData["LastName"],
                    DateOfBirth      = DateTime.Parse(newData["DateOfBirth"]),
                    Location         = newData["Location"],
                    Email            = newData["Email"],
                    Phone            = newData["Phone"],
                    LinkedIn         = newData["LinkedIn"],
                    CurrentWorkplace = newData["CurrentWorkplace"],
                    Seniority        = (SeniorityLevel)int.Parse(newData["Seniority"]),
                    Technologies     = contactTechs
                };

                if (Request.Files["CV"] != null)
                {
                    using (BinaryReader br = new BinaryReader(Request.Files["CV"].InputStream))
                    {
                        newContact.CVContent     = br.ReadBytes(Request.Files["CV"].ContentLength);
                        newContact.CVFileName    = Request.Files["CV"].FileName;
                        newContact.CVContentType = Request.Files["CV"].ContentType;
                    }
                }

                hfdb.Contacts.Add(newContact);
                hfdb.SaveChanges();
            }

            return(RedirectToAction("ContactMgmt"));
        }
        public ActionResult EditContact(FormCollection editData)
        {
            int editId = int.Parse(editData["editContactId"]);

            using (HFContext hfdb = new HFContext())
            {
                Contact editContact = hfdb.Contacts.Find(editId);

                if (editData["Technologies"] != null)
                {
                    int[] contactTechIds = editData["Technologies"].Split(',').Select(tIds => int.Parse(tIds)).ToArray();

                    editContact.Technologies.Clear();

                    foreach (int tId in contactTechIds)
                    {
                        Technology cTech = hfdb.Technologies.Find(tId);
                        editContact.Technologies.Add(cTech);
                    }
                }

                editContact.FirstName        = editData["FirstName"];
                editContact.LastName         = editData["LastName"];
                editContact.DateOfBirth      = DateTime.Parse(editData["DateOfBirth"]);
                editContact.Location         = editData["Location"];
                editContact.Email            = editData["Email"];
                editContact.Phone            = editData["Phone"];
                editContact.LinkedIn         = editData["LinkedIn"];
                editContact.CurrentWorkplace = editData["CurrentWorkplace"];
                editContact.Seniority        = (SeniorityLevel)int.Parse(editData["Seniority"]);

                if (Request.Files["CV"] != null)
                {
                    using (BinaryReader br = new BinaryReader(Request.Files["CV"].InputStream))
                    {
                        editContact.CVContent     = br.ReadBytes(Request.Files["CV"].ContentLength);
                        editContact.CVFileName    = Request.Files["CV"].FileName;
                        editContact.CVContentType = Request.Files["CV"].ContentType;
                    }
                }

                hfdb.SaveChanges();
            }

            return(RedirectToAction("ContactMgmt"));
        }
        public ActionResult EditContactComment(FormCollection editData)
        {
            int contactId     = 0;
            int editCommentId = int.Parse(editData["editCommentId"]);

            using (HFContext hfdb = new HFContext())
            {
                Annotation editComment = hfdb.Annotations.Find(editCommentId);
                contactId = (int)editComment.ContactId;

                editComment.Message = editData["editCommentText"];

                hfdb.SaveChanges();
            }

            return(RedirectToAction("ContactDetails", "Contacts", new { Id = contactId }));
        }
        public JsonResult GetPhaseCommentData([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            IQueryable <Annotation> query = null;
            int totalCount    = 0;
            int filteredCount = 0;

            int   processInstanceId = int.Parse(Request.Form["processInstanceId"]);
            Phase commentPhase      = (Phase)int.Parse(Request.Form["commentPhase"]);

            using (HFContext hfdb = new HFContext())
            {
                query = from anno in hfdb.Annotations
                        where anno.PInsId == processInstanceId && anno.Type == commentPhase
                        select anno;

                totalCount = query.Count();

                if (requestModel.Search.Value != string.Empty)
                {
                    string value = requestModel.Search.Value.Trim();
                    query = query.Where(anno => anno.Message.Contains(value) ||
                                        anno.Author.FirstName.Contains(value) ||
                                        anno.Author.LastName.Contains(value)
                                        );
                }

                filteredCount = query.Count();

                query = query.OrderBy("Time desc");
                query = query.Skip(requestModel.Start).Take(requestModel.Length);

                var data = query.Select(anno =>
                                        new {
                    Id         = anno.Id,
                    Message    = anno.Message,
                    Hidden     = anno.Hidden,
                    AuthorId   = anno.AuthorId,
                    AuthorText = anno.Author.FirstName + " " + anno.Author.LastName,
                    Time       = anno.Time.Day + ". " + anno.Time.Month + ". " + anno.Time.Year + ". " +
                                 anno.Time.Hour + ":" + anno.Time.Minute + ":" + anno.Time.Second
                }).ToList();

                return(Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount)));
            }
        }
        // ako je hfdb null ne uzima tehnologije&komentare (za slucajeve gde mi ne trebaju)
        public static ContactInfo ConvertContact(Contact con, HFContext hfdb = null)
        {
            ICollection <TechnologyInfo>        cTechInfos       = null;
            ICollection <ContactAnnotationInfo> cAnnotationInfos = null;

            if (hfdb != null)
            {
                hfdb.Contacts.Attach(con);

                cTechInfos =
                    (from cTech in con.Technologies
                     select new TechnologyInfo
                {
                    Name = cTech.Name
                }).ToList();

                cAnnotationInfos =
                    (from cAnnotation in con.Comments
                     select new ContactAnnotationInfo
                {
                    Id = cAnnotation.Id,
                    Message = cAnnotation.Message,
                    Time = cAnnotation.Time,
                    Hidden = cAnnotation.Hidden,
                    Author = ConvertUser(cAnnotation.Author)
                }).ToList();
            }

            return(new ContactInfo
            {
                Id = con.Id,
                FirstName = con.FirstName,
                LastName = con.LastName,
                DateOfBirth = con.DateOfBirth,
                Location = con.Location,
                Email = con.Email,
                Phone = con.Phone,
                LinkedIn = con.LinkedIn,
                CurrentWorkplace = con.CurrentWorkplace,
                CVContent = con.CVContent,
                Seniority = con.Seniority,
                Technologies = cTechInfos,
                Comments = cAnnotationInfos
            });
        }
        public ActionResult ProcessDetails(int Id)
        {
            Process     detailProcess     = null;
            ProcessInfo detailProcessView = null;

            using (HFContext hfdb = new HFContext())
            {
                detailProcess     = hfdb.Processes.Find(Id);
                detailProcessView = ModelConverter.ConvertProcess(detailProcess);
            }

            if (detailProcessView.EndDate != null)
            {
                ViewBag.processEdit = "disabled";
            }

            return(View(detailProcessView));
        }