public ActionResult DenyLop(int id, string deniedMessage) { try { if (String.IsNullOrEmpty(deniedMessage.Trim())) { deniedMessage = "Odmítnuto (bez udání důvodu)"; //natvrdo popisek } LopDao lopDao = new LopDao(); Lop lop = lopDao.GetById(id); /* * //uložení historie * var histDao = new LopHistoryDao(); * var copy = new LopHistory(lop); * histDao.Create(copy); */ lop.LastChangedDate = DateTime.Now; //něco se děje lop.DeniedMessage = deniedMessage; //update objektu lopDao.Update(lop); LopWorkFlowEvent.Create(lop, LopWorkFlowEvent.Colors.Danger, LopWorkFlowEvent.Icons.User, "Odmítnutí odpovědnosti", "Řešitel odmítl řešit tento úkol. <q>" + deniedMessage + "</q>", User.Identity.Name ); var s = lop.Resitel + " " + Resources.LopTexts.OdmitlResitUkol + " " + "<a href='/Lop/Detail/" + lop.Id + "'>" + lop.Nazev + "</a><br />" + lop.DeniedMessage; Notifikace.Create(lop.Zadavatel.Id, s); TempData[MessagesHelper.Success] = Resources.LopTexts.UkolBylOdmitnut; return(RedirectToAction("Index")); } catch { TempData[MessagesHelper.Warning] = Resources.LopTexts.NepodariloSeOdmitnoutUkol; } return(RedirectToAction("Detail/" + id)); }
public ActionResult FinishUkol(int id, bool finished, string komentar) { try { LopDao lopD = new LopDao(); Lop lop = lopD.GetById(id); lop.LastChangedDate = DateTime.Now; //něco se děje if (finished) { //KONTROLA JESTLI LZE UKONČIT ÚKOL, DOKUD NEJSOU UKONČENY PODÚKOLY //teoreticky můžeme přesměrovat na hlášku, jestli chce zadavatel označit všechny podúkoly //jako vyřešené? //btw .. tlačítko na tuhle akci ukážu jen pokud jsou všechny done ;) int celkemUkolu = lop.PocetSubUkoluCelkem(); int ukoluHotovych = lop.PocetSubUkoluCompleted(); if (celkemUkolu != ukoluHotovych) { TempData[MessagesHelper.Info] = Resources.LopTexts.NelzeUkoncitUkol1 + " (" + (celkemUkolu - ukoluHotovych) + ") " + Resources.LopTexts.NelzeUkoncitUkol2; return(RedirectToAction("Index")); } Uzivatel u = new UzivatelDao().GetByWindowsId(User.Identity.Name.ToUpper()); bool isZadavatel = u.Id == lop.Zadavatel.Id; bool isZadavatelATeprveUzavira = false; if (isZadavatel && lop.Status == StatusUkolu.Open) //v případě že je uživatel zároveň Zadavatel a Řešitel { isZadavatelATeprveUzavira = true; } if (isZadavatel && lop.Status == StatusUkolu.Closed) { lop.CheckDate = DateTime.Now; //proběhla kontrola (ať už jakákoliv) lop.FinishDate = DateTime.Now; //v pořádku #region workflow-event LopWorkFlowEvent.Create(lop, LopWorkFlowEvent.Colors.Success, LopWorkFlowEvent.Icons.Ok, "Úkol uzavřen", "Zadavatel přijal řešení úkolu a úkol uzavřel jako splněný. <q>" + komentar + "</q>", User.Identity.Name ); #endregion } else { #region workflow-event LopWorkFlowEvent.Create(lop, LopWorkFlowEvent.Colors.Info, LopWorkFlowEvent.Icons.User, "Úkol dokončen", "Řešitel označil úkol jako splněný - čeká na schválení zadavatelem. <q>" + komentar + "</q>", User.Identity.Name ); #endregion lop.CloseDate = DateTime.Now; } lop.Status = StatusUkolu.Closed; //řešitel pouze uzavírá na close if (!string.IsNullOrEmpty(komentar)) { var koment = komentar + "<br />"; koment += $"<span class=\"glyphicon glyphicon-time\"></span><i>{DateTime.Now} - by {new Uzivatel(User.Identity.Name)}</i>"; lop.Komentar = (!string.IsNullOrEmpty(lop.Komentar) ? lop.Komentar + "<hr />" + koment : koment); } //update objektu lopD.Update(lop); if (isZadavatel && !isZadavatelATeprveUzavira) //tuto hlášku nechceme generovat, pokud je to sice zadavatel ale zároveň řešitel a teprve uzavírá úkol poprvé ;) { string s = Resources.LopTexts.ByloPrijatoReseniLopu + " <a href='/Lop/Detail/" + lop.Id + "?showHistory=true#historyBtn'>" + lop.Nazev + "</a>"; Notifikace.Create(lop.Resitel.Id, s); } else { string s = Resources.LopTexts.UkolBylOznacenJakoVyreseny + " <a href='/Lop/Detail/" + lop.Id + "'>" + lop.Nazev + "</a>"; Notifikace.Create(lop.Zadavatel.Id, s); } TempData[MessagesHelper.Success] = Resources.LopTexts.UkolBylVyresen; } else { //pokud chceme označit jako nevyřešený lop.CheckDate = DateTime.Now; //proběhla kontrola (ať už jakákoliv) lop.CloseDate = null; lop.FinishDate = null; //nepřijato lop.Status = StatusUkolu.Open; //úkol musí být dále zpracováván if (!string.IsNullOrEmpty(komentar)) { var koment = komentar + "<br />"; koment += $"<span class=\"glyphicon glyphicon-time\"></span><i>{DateTime.Now} - by {new Uzivatel(User.Identity.Name)}</i>"; lop.Komentar = (!string.IsNullOrEmpty(lop.Komentar) ? lop.Komentar + "<hr />" + koment : koment); } lopD.Update(lop); #region workflow-event LopWorkFlowEvent.Create(lop, LopWorkFlowEvent.Colors.Danger, LopWorkFlowEvent.Icons.Remove, "Řešení zamítnuto", "Zadavatel odmítl odevzdané řešení úkolu. <q>" + komentar + "</q>", User.Identity.Name ); #endregion string s = Resources.LopTexts.ByloOdmitnutoReseniUkolu + " <a href='/Lop/Detail/" + lop.Id + "?showHistory=true#historyBtn'>" + lop.Nazev + "</a>"; Notifikace.Create(lop.Resitel.Id, s); TempData[MessagesHelper.Warning] = Resources.LopTexts.UkolJeZnovuVReseni; } } catch (Exception e) { TempData[MessagesHelper.Warning] = Resources.LopTexts.NepodariloSeUpravitZaznam; } return(RedirectToAction("Detail/" + id)); }