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 })); }
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)); }
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)); } }
public IEnumerable <HistoricEvent> GetAllTours() { IEnumerable <HistoricEvent> tours; using (HFContext db = new HFContext()) { tours = db.Events.OfType <HistoricEvent>().ToList().OrderBy(t => t.EventId); } return(tours); }
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 })); }
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 })); }
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)); }