public WorkIssue ProcessEmbedQuestions(WorkIssue issue) { var _commands = issue.GetCommands(); if (_commands != null && _commands.Count() > 0) { foreach (string _command in _commands) { if (_command.CountOf(",") >= 2) { string _id = _command.Split(new string[] { "," }, StringSplitOptions.None)[1] .Replace("#", string.Empty); try { Guid id = Guid.Parse(_id); var _question = QuestionManager.GetById(id); string _htmlQuestion = RenderViewToString(ControllerContext, "Questions/_EmbedQuestion", _question); issue.Content = issue.Content.Replace(_command, _htmlQuestion); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } return(issue); }
public async Task <ActionResult> Details(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkIssue workIssue = IssueManager.GetById(id.Value); if (User.Identity.IsAuthenticated) { workIssue.AddViewer(User.Identity.Name); await IssueManager.UpdateAsync(workIssue); } if (workIssue == null) { return(HttpNotFound()); } workIssue = BuildContent(workIssue); var _view = Mapper.Map <WorkIssue, IssueView>(workIssue); if (Request.IsAjaxRequest()) { return(PartialView("Issues/_IssueItem", _view)); } return(View(_view)); }
public void Notify(WorkIssue issue) { if (IsNotify) { issue.Notify(emailService); } }
internal void MappContactIssue(Contact contact, WorkIssue issue) { using (ApplicationDbContext context = new ApplicationDbContext()) { var _issue = context.Issues.Find(issue.Id); var _contact = context.Contacts.Find(contact.Id); _issue.Contacts.Add(_contact); _contact.Issues.Add(_issue); context.Entry <WorkIssue>(_issue).State = EntityState.Modified; context.Entry <Contact>(_contact).State = EntityState.Modified; try { context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); } //_contact.Issues.Add(_issue); } // contact.Issues.Add(issue); //issue.Contacts.Add(contact); //try //{ // //_unitOfWorkAsync.RepositoryAsync<Contact>().Update(contact); // _unitOfWorkAsync.RepositoryAsync<WorkIssue>().InsertOrUpdateGraph(issue); // _unitOfWorkAsync.SaveChangesAsync(); //} //catch (Exception ex) //{ // Console.WriteLine(ex.Message); //} }
//public bool AddContact(Guid id, Contact contact) //{ // bool _result = false; // var issue = IssueManager.GetById(id); // if (issue == null) { return _result; } // var _contacts = IssueManager.GetContacts(id); //} public WorkIssue ProcessEmbedUrls(WorkIssue issue) { var _commands = issue.GetCommands(); if (_commands != null && _commands.Count() > 0) { foreach (string command in _commands) { var _command = new Command(command); if (_command.Type == Models.CommandType.IsUrl) { try { string _id = command.Split(new string[] { "," }, StringSplitOptions.None)[1] .Replace("#", string.Empty); Guid id = Guid.Parse(_id); var _url = UrlManager.GetById(id); _url.Load(); if (_url.Title.IsNullOrEmptyOrWhiteSpace()) { UrlManager.Update(_url); } string _htmlQuestion = RenderViewToString(ControllerContext, "Urls/_EmbedUrl", _url); issue.Content = issue.Content.Replace(command, _htmlQuestion); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } return(issue); }
public async Task <ActionResult> AddTimeToDo(Guid id) { WorkIssue workIssue = IssueManager.GetById(id); if (Request.IsAjaxRequest()) { return(PartialView("Issues/_AddTime", workIssue)); } return(RedirectToAction("Index")); }
public static List <WorkIssue> GetIssuesByUserDate(string user, DateTime date) { List <WorkIssue> _issues = new List <WorkIssue>(); try { BugNetConnection(); _cmd = new SqlCommand("BugNet_Issue_GetIssuesByAssignedUserNameDate", _con) { CommandType = CommandType.StoredProcedure }; _cmd.CommandTimeout = 1000; _cmd.Parameters.Add("@UserName", SqlDbType.DateTime).Value = user; _cmd.Parameters.Add("@DueDate", SqlDbType.DateTime).Value = date.ToShortDateString(); _dr = _cmd.ExecuteReader(); while (_dr.Read()) { try { WorkIssue _issue = new WorkIssue(); //_issue.IssueId = (int)_dr["IssueId"]; //_issue.IssueTitle = (string)_dr["IssueTitle"]; //_issue.IssueDescription = (string)_dr["IssueDescription"]; //_issue.IssueDescription = StringHelpers.RemoveHTMLTags(_issue.IssueDescription); //_issue.StatusName = (string)_dr["StatusName"]; //_issue.ProjectId = (int)_dr["ProjectId"]; //_issue.ProjectName = (string)_dr["ProjectName"]; //_issue.IssueDueDate = (DateTime)_dr["IssueDueDate"]; //_issue.IssueEstimation = (decimal)_dr["IssueEstimation"]; //_issue.IssueProgress = (int)_dr["IssueProgress"]; //_issue.MilestoneName = (string)_dr["MilestoneName"]; //_issue.AssignedUserName = (string)_dr["AssignedUserName"]; //_issue.DateCreated = (DateTime)_dr["DateCreated"]; //_issue.LastUpdate = (DateTime)_dr["LastUpdate"]; //_issue.LastUpdateUserId = (Guid)_dr["LastUpdateUserId"]; //_issue.IsClosed = (bool)_dr["IsClosed"]; _issues.Add(_issue); } catch { } } _dr.Close(); _cmd.Dispose(); } catch (Exception) { } return(_issues); }
public async Task <ActionResult> AddTimeToDo(Guid id, int minutes) { WorkIssue workIssue = IssueManager.GetById(id); workIssue.AddTimeToDo(minutes); await IssueManager.UpdateAsync(workIssue); if (Request.IsAjaxRequest()) { return(PartialView("Issues/_WorkTime", "Work on " + workIssue.IssueEstimation)); } return(RedirectToAction("Index")); }
public ActionResult AddIssue(Guid jobId) { WorkIssue issue = new WorkIssue() { JobId = jobId }; if (Request.IsAjaxRequest()) { return(PartialView("Issues/_QuickCreateIssue", issue)); } return(RedirectToAction("Index")); }
public ActionResult AddSubIssue(Guid id) { WorkIssue issue = new WorkIssue() { ParentId = id }; if (Request.IsAjaxRequest()) { return(PartialView("Issues/_AjaxQuickCreateIssue", issue)); } return(RedirectToAction("Index")); }
public async Task <ActionResult> SetWorkOnTime(Guid id, string date) { DateTime newStart = DateTime.Parse(date); WorkIssue workIssue = IssueManager.GetById(id); workIssue.UpdateTime(newStart); await IssueManager.UpdateAsync(workIssue); if (Request.IsAjaxRequest()) { return(PartialView("Issues/_WorkTime", "Work on " + date)); } return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkIssue workIssue = IssueManager.GetById(id.Value); if (workIssue == null) { return(HttpNotFound()); } return(View(workIssue)); }
public bool Insert(WorkIssue issue) { string[] _commands = issue.GetCommands(); if (_commands != null && _commands.Count() > 0) { foreach (string _command in _commands) { Command command = new Command(_command); if (command.Type == Models.CommandType.IsQuestion) { Question question = new Question(); question.Id = Guid.NewGuid(); question.IssueId = issue.Id; question.Title = HttpUtility.HtmlDecode(command.Title); question.Content = command.Body; question.CreatedBy = issue.CreatedBy; _unitOfWorkAsync.RepositoryAsync <Question>().Insert(question); issue.Content = issue.Content .Replace(_command, _command.AddAfter(',', ",#" + question.Id.ToString())); } else if (command.Type == Models.CommandType.IsUrl) { var urlModel = new Url(command.Header); urlModel.Load(); urlModel.CreatedBy = issue.CreatedBy; urlModel.IssueId = issue.Id; _unitOfWorkAsync.RepositoryAsync <Url>().Insert(urlModel); issue.Content = issue.Content .Replace(_command, command.Text.AddAfter(',', ",#" + urlModel.Id.ToString())); } } } _unitOfWorkAsync.RepositoryAsync <WorkIssue>().Insert(issue); int _result = _unitOfWorkAsync.SaveChangesAsync().Result; if (_result >= 0) { Notify(issue); return(true); } else { return(false); } }
public async Task <bool> UpdateAsync(WorkIssue issue) { issue.Update(); ProcessIssueCommands(issue); _unitOfWorkAsync.Repository <WorkIssue>().Update(issue); int _result = _unitOfWorkAsync.SaveChangesAsync().Result; if (_result >= 0) { Notify(issue); if (issue.Status == IssueStatus.Done) { WorkIssue _newIssue = new WorkIssue(); if (issue.Repeat == ScheduleType.Daily) { _newIssue = issue.MoveTo(issue.Start.Value.AddDays(1)); } else if (issue.Repeat == ScheduleType.Weekly) { _newIssue = issue.MoveTo(issue.Start.Value.AddDays(5)); } else if (issue.Repeat == ScheduleType.Monthly) { _newIssue = issue.MoveTo(issue.Start.Value.AddMonths(1)); } else if (issue.Repeat == ScheduleType.Yearly) { _newIssue = issue.MoveTo(issue.Start.Value.AddYears(1)); } _newIssue.Status = IssueStatus.New; _newIssue.Update(); _unitOfWorkAsync.Repository <WorkIssue>().Insert(_newIssue); Notify(_newIssue); await _unitOfWorkAsync.SaveChangesAsync(); } return(true); } else { return(false); } }
public async Task <ActionResult> Delete(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkIssue workIssue = IssueManager.GetById(id.Value); if (workIssue == null) { return(HttpNotFound()); } if (Request.IsAjaxRequest()) { return(PartialView("_Delete", workIssue)); } return(View(workIssue)); }
public async Task <ActionResult> Edit(WorkIssue workIssue) { if (ModelState.IsValid) { workIssue.UpdatedBy = User.Identity.Name; try { IssueManager.IsNotify = true; await IssueManager.UpdateAsync(workIssue); return(RedirectToAction("Index", "Home")); } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(View(workIssue)); }
private void ProcessIssueCommands(WorkIssue issue) { string[] _commands = issue.GetCommands(); if (_commands != null && _commands.Count() > 0) { foreach (string _command in _commands) { if (!_command.Contains("#")) { Command command = new Command(_command); if (command.Type == Models.CommandType.IsQuestion) { Question question = new Question(); question.Id = Guid.NewGuid(); question.IssueId = issue.Id; question.Title = HttpUtility.HtmlDecode(command.Title); question.Content = command.Body; question.CreatedBy = issue.CreatedBy; _unitOfWorkAsync.RepositoryAsync <Question>().Insert(question); issue.Content = issue.Content .Replace(_command, _command.AddAfter(',', ",#" + question.Id.ToString())); } if (command.Type == Models.CommandType.IsUrl) { Url url = new Url(); url.Id = Guid.NewGuid(); url.IssueId = issue.Id; url.Title = HttpUtility.HtmlDecode(command.Title); url.CreatedBy = issue.CreatedBy; _unitOfWorkAsync.RepositoryAsync <Url>().Insert(url); issue.Content = issue.Content .Replace(_command, _command.AddAfter(',', ",#" + url.Id.ToString())); } } } } }
public Task SendAsync(WorkIssue model, string toEmail) { MailMessage _msg = new MailMessage(); _msg.Subject = "[Issue] " + model.Title.HtmlToText().ToStandard(); _msg.To.Add(new MailAddress(toEmail)); _msg.IsBodyHtml = true; _msg.Body = model.Content; _msg.Body += "<br />" + GetIssueUrl(model); using (SmtpClient client = new SmtpClient { EnableSsl = true, Host = "smtp.gmail.com", Port = 587, Credentials = new NetworkCredential("*****@*****.**", "P@$$w0rdPMT") }) { client.Send(_msg); } return(Task.FromResult(0)); }
public async Task <ActionResult> MarkStatus(Guid id, IssueStatus status) { WorkIssue workIssue = IssueManager.GetById(id); workIssue.Status = status; await IssueManager.UpdateAsync(workIssue); if (status == IssueStatus.Done) { Message message = new Message(); message.Title = "[Chúc mừng] - Finished " + workIssue.Title; message.Content = workIssue.Content; message.ToEmails = workIssue.GetEmails().ToList(); message.Notify(EmailService); } if (Request.IsAjaxRequest()) { return(PartialView("Issues/_WorkStatus", status)); } return(RedirectToAction("Index")); }
public async Task <ActionResult> LoadIssue(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkIssue workIssue = IssueManager.GetById(id.Value); if (workIssue == null) { return(HttpNotFound()); } var _view = Mapper.Map <WorkIssue, IssueView>(workIssue); if (Request.IsAjaxRequest()) { return(PartialView("Issues/_IssueOnly", _view)); } return(View(_view)); }
public MailMessage BuildMessage(WorkIssue model) { MailMessage _msg = new MailMessage(); string title = string.Empty; string footer = string.Empty; if (model.Status == IssueStatus.Done) { title = title + "[Done]"; } if (model.Status == IssueStatus.New) { title = title + "[New]"; } title = title + " " + model.Title.HtmlToText().ToStandard(); _msg.Subject = title; _msg.Body = model.Content; _msg.IsBodyHtml = true; return(_msg); }
public string GetIssueUrl(WorkIssue model) { return("http://workcard.vn/workissues/details/" + model.Id.ToString()); }
public async Task <ActionResult> Create(WorkIssue workIssue) { if (ModelState.IsValid) { if (!workIssue.IsValid()) { if (Request.IsAjaxRequest()) { return(PartialView("_NotifyMessage", "Issue is not valid")); } else { return(View("_NotifyMessage", "Issue is not valid")); } } workIssue.Id = Guid.NewGuid(); workIssue.CreatedBy = User.Identity.Name; workIssue.PrepareToCreate(); workIssue.Update(); if (workIssue.Tags.Count > 0) { var projects = ProjectManager.GetAllOf(User.Identity.Name).ToList(); var _tag = workIssue.Tags[0].ToLower(); var _selectProjects = projects .Where(t => t.Title.ToLower().Contains(_tag)) .ToList(); if (_selectProjects != null && _selectProjects.Any()) { workIssue.ProjectId = _selectProjects.FirstOrDefault().Id; } else { var _project = ProjectManager.GetByName(_tag); if (_project != null) { workIssue.ProjectId = _project.Id; } } } IssueManager.Insert(workIssue); if (workIssue.ProjectId.HasValue) { var _project = ProjectManager.GetById(workIssue.ProjectId.Value); if (!_project.IsOf(User.Identity.Name)) { Contact contact = new Contact(); contact.CreatedBy = User.Identity.Name; contact.Email = User.Identity.Name; contact.UserName = User.Identity.Name; contact.Projects.Add(_project); workIssue.Contacts.Add(contact); await ProjectManager.AddContactAsync(_project.Id, contact); } } //if(workIssue.HasInnerMembers()) //{ // var _innerMembers = workIssue.GetInnerMembers(); // foreach(string _member in _innerMembers) // { // Contact _contact = new Contact(); // _contact.Email = _member; // _contact.UserName = _member; // _contact.CreatedBy = User.Identity.Name; // await ContactManager.AddContactAsync(_contact, User.Identity.Name); // } //} if (Request.IsAjaxRequest()) { var _viewObject = Mapper.Map <WorkIssue, IssueView>(workIssue); return(PartialView("Issues/_IssueItem", _viewObject)); } return(RedirectToAction("Details", "WorkIssues", new { id = workIssue.Id })); } return(View(workIssue)); }
public WorkIssue BuildContent(WorkIssue issue) { issue = ProcessEmbedQuestions(issue); issue = ProcessEmbedUrls(issue); return(issue); }