Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
 public void Notify(WorkIssue issue)
 {
     if (IsNotify)
     {
         issue.Notify(emailService);
     }
 }
Beispiel #4
0
        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);
            //}
        }
Beispiel #5
0
        //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);
        }
Beispiel #6
0
        public async Task <ActionResult> AddTimeToDo(Guid id)
        {
            WorkIssue workIssue = IssueManager.GetById(id);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("Issues/_AddTime", workIssue));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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"));
        }
Beispiel #9
0
        public ActionResult AddIssue(Guid jobId)
        {
            WorkIssue issue = new WorkIssue()
            {
                JobId = jobId
            };

            if (Request.IsAjaxRequest())
            {
                return(PartialView("Issues/_QuickCreateIssue", issue));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #10
0
        public ActionResult AddSubIssue(Guid id)
        {
            WorkIssue issue = new WorkIssue()
            {
                ParentId = id
            };

            if (Request.IsAjaxRequest())
            {
                return(PartialView("Issues/_AjaxQuickCreateIssue", issue));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #11
0
        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"));
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        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);
            }
        }
Beispiel #15
0
        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));
        }
Beispiel #16
0
        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));
        }
Beispiel #17
0
        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()));
                        }
                    }
                }
            }
        }
Beispiel #18
0
        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));
        }
Beispiel #19
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"));
        }
Beispiel #20
0
        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));
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
 public string GetIssueUrl(WorkIssue model)
 {
     return("http://workcard.vn/workissues/details/" + model.Id.ToString());
 }
Beispiel #23
0
        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));
        }
Beispiel #24
0
 public WorkIssue BuildContent(WorkIssue issue)
 {
     issue = ProcessEmbedQuestions(issue);
     issue = ProcessEmbedUrls(issue);
     return(issue);
 }