public void init(CranTaskInfo task,List<String>Managers) { this.Managers = Managers; CurrentTask = task; pnlTask.DataContext = CurrentTask; lstUsers.ItemsSource = from OrdersUser u in OrdersContext.Current.Context.OrdersUsers where u.CanAgreeCranTask select u; acbManager.ItemsSource = Managers; cmbCranName.ItemsSource = Crans; }
public static void sendCranTask(string header, CranTaskInfo task) { try { IQueryable users = OrdersUser.getAllUsers(); List<string> mailToList = new List<string>(); foreach (OrdersUser user in users) { if ( ( user.SendAllCranTask && (user.SendOnlyMZCranTask&& task.CranNumber<=2 ||!user.SendOnlyMZCranTask) ) || ( user.SendCreateMail && task.Author.ToLower() == user.Name.ToLower() )|| ( task.State=="new" && user.SendAllCreateCranTask && (user.SendOnlyMZCranTask&& task.CranNumber<=2 ||!user.SendOnlyMZCranTask) )|| ( task.AgreeDict.ContainsKey(user.UserID) && (user.SendAgreeMail || user.SendAllAgreeMail|| user.SendAllCranTask || user.SendAllCreateCranTask ||user.SendAllAgreeCranTask || user.SendAgreeCranTask && task.StateDB=="new") ) ){ if (user.Mails.Count > 0) { foreach (string mail in user.Mails) { if (!String.IsNullOrEmpty(mail) && !mailToList.Contains(mail.ToLower())) { mailToList.Add(mail.ToLower()); } } } } } //mailToList.Add("*****@*****.**"); Attachment attach = null; try { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(CranTaskInfo.getTaskPrintHTML(task)); writer.Flush(); stream.Position = 0; attach = new Attachment(stream, String.Format("Заявка{0}.xls", task.Number), "application/vnd.ms-excel"); } catch (Exception e) { Logger.info(e.ToString(), Logger.LoggerSource.server); } string message = CranTaskInfo.getTashHTML(task); message += String.Format("<h3><a href='{0}'>Перейти к списку заявок</a></h3>", String.Format("http://{0}:{1}/#/CransPage", HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port)); if (mailToList.Count > 0) { SendMailLocal(smtpServer, smtpPort, smtpUser, smtpPassword, smtpDomain, smtpFrom, mailToList, header, message, true, attach); } } catch (Exception e) { Logger.error(String.Format("Ошибка при отправке почты: {0}", e.ToString()), Logger.LoggerSource.server); } }
public static string getTaskPrintHTML(CranTaskInfo order, bool showStyle = true) { try { string style = showStyle ? "<Style>table {border-collapse: collapse;} th.solid, td.solid {border-width: 1px; border-style: solid; border-color: #000000;} td.under {border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #000000;} </Style>" : ""; string body = String.Format(@" <table > <tr > <th colspan='7' align='right'>Приложение 1 <br/>к Регламенту по предоставлению подъемных сооружений Воткинской ГЭС<br/>(Для статистического учета работ ПС ГЭС)</th> </tr> <tr> <th colspan='7' align='center'><h2>ЗАЯВКА №{0}</h2></th> </tr> <tr> <th colspan='7' align='center'><h3>{1}</h3></th> </tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr> <th/> <th/> <th colspan='3' align='center' class='under'> </th> <th/> </tr> <tr> <td colspan='7' align='center'><i>Наименование организации</i></td> </tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr > <th align='center' valign='top' width='50' class='solid' rowspan='2' >№ п/п</th> <th align='center' valign='top' width='150' class='solid' rowspan='2' >Наименование ПС</th> <th align='center' valign='top' width='250' class='solid' rowspan='2' >Краткое содержание работ</th> <th align='center' valign='top' width='300' class='solid' colspan='2' >Ответственный стропальщик</th> <th align='center' valign='top' width='220' class='solid' colspan='2'>Период использования</th> </tr> <tr> <th align='center' valign='center' width='230' class='solid' >Ф.И.О.</th> <th align='center' valign='center' width='70' class='solid' >№ удостоверения</th> <th align='center' valign='center' width='110' class='solid' >Начало</th> <th align='center' valign='center' width='110' class='solid' >Окончание</th> </tr> <tr> <td align='center' valign='top' class='solid' >{2}</td> <td align='center' valign='top' class='solid' >{3}</td> <td align='center' valign='top' class='solid' >{4}</td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' >{5}</td> <td align='center' valign='top' class='solid' >{6}</td> </tr> <tr> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> </tr> <tr> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> </tr> <tr> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> </tr> <tr> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> <td align='center' valign='top' class='solid' > </td> </tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr> <td bordercolor='white' colspan='4'>Специалист, ответственный за безопасное производство работ с применением ПС «Заказчика»</td> <td bordercolor='white' class='under' align='right'>/</td> <td bordercolor='white' class='under' colspan='2' >{7}</td> </tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr><th colspan='7' bordercolor='white' colspan='2'>СОГЛАСОВАНО </th></tr> <tr><td bordercolor='white' colspan='6' > </td></tr> <tr> <td bordercolor='white' colspan='4'>Представитель Дирекции по реализации ПКМ (только для кранов МЗ) </td> <td bordercolor='white' class='under' align='right'>/</td> <td bordercolor='white' class='under' colspan='2'> </td> </tr> <tr><td bordercolor='white' colspan='7' > </td></tr> <tr> <td bordercolor='white' colspan='4'>Специалист, ответственный за осуществление производственного контроля при эксплуатации ПС (при необходимости)</td> <td bordercolor='white' class='under' align='right'>/</td> <td bordercolor='white' class='under' colspan='2'> </td> </tr> <tr><td bordercolor='white' colspan='7' > </td></tr> <tr><th colspan='6' bordercolor='white' colspan='2'>УТВЕРЖДЕНО </th></tr> <tr><td bordercolor='white' colspan='7' > </td></tr> <tr> <td bordercolor='white' colspan='4'>{8}</td> <td bordercolor='white' class='under' align='right'>/</td> <td bordercolor='white' class='under' colspan='2'>{9}</td> </tr> </table> ", order.Number, order.DateCreate.ToString("dd.MM.yyyy"), 1, order.CranName, order.Comment, order.Allowed ? order.AllowDateStart.ToString("dd.MM.yy HH:mm") : order.NeedStartDate.ToString("dd.MM.yy HH:mm"), order.Allowed ? order.AllowDateEnd.ToString("dd.MM.yy HH:mm") : order.NeedEndDate.ToString("dd.MM.yy HH:mm"), order.CranNumber<=2?"Представитель группы ТиГМО ПТС (только для кранов МЗ)":"Исполнитель заявки",order.Manager,!String.IsNullOrEmpty(order.AuthorAllow)?order.AuthorAllow:" "); return style + body; } catch (Exception e) { Logger.info("Ошибка при формировании html представления " + e.ToString(), Logger.LoggerSource.server); return ""; } }
public static string getTashHTML(CranTaskInfo order, bool showStyle = true) { try { string style = showStyle ? "<Style>table {border-collapse: collapse;} td{text-align:center;} td.comments{text-align:left;} td, th {border-width: 1px; border-style: solid; border-color: #BBBBFF; padding-left: 3px; padding-right: 3px;}</Style>" : ""; string htmlNumber = String.Format("Заявка на работу крана №{0} ", order.Number); string htmlState = String.Format("Состояние: {0}", order.State); string htmlFirstTRTable = String.Format("<table width='100%'><tr><th>{0}</th><th>{1}</th></tr></table>", htmlNumber, htmlState); string htmlInfoTable = String.Format("<table width='100%'><tr><th colspan='3'>Информация о заявке</th></tr><tr><th width='30%'>Оборудование</th><th width='30%'>Текст заявки</th><th width='30%'>Согласовано</th></tr><tr><td width='30%'>{0}</td><td width='30%'>{1}</td><td width='30%'>{2}</td></tr></table>", order.CranName, String.Format("{0}<br/><b>Ответственный: </b>{1}", order.Comment, order.Manager), order.AgreeUsersText); string htmlDatesTable = String.Format("<table width='100%'><tr><th colspan='4'>Сроки заявки</th></tr><tr><th> </th><th>Начало</th><th>Окончание</th><th> </th></tr><tr><th>Заявка</th><td>{0}</td><td>{1}</td><td>{2}</td></tr><tr><th>Разрешение</th><td>{3}</td><td>{4}</td><td>{5}</td></tr><tr><th>Факт</th><td>{6}</td><td>{7}</td><td>{8}</td></tr></table>", order.NeedStartDate.ToString("dd.MM.yy HH:mm"), order.NeedEndDate.ToString("dd.MM.yy HH:mm"), order.Author, order.Allowed ? order.AllowDateStart.ToString("dd.MM.yy HH:mm") : order.Denied ? "Отклонено": order.Cancelled?"Снята":" ", order.Allowed ? order.AllowDateEnd.ToString("dd.MM.yy HH:mm") : order.Denied ? "Отклонено" : order.Cancelled?"Снята":" ", order.Allowed || order.Denied ? order.AuthorAllow : "-", order.Finished?order.RealDateStart.ToString("dd.MM.yy HH:mm"):"-", order.Finished ? order.RealDateEnd.ToString("dd.MM.yy HH:mm") : "-",!string.IsNullOrEmpty(order.AuthorFinish)?order.AuthorFinish:"-"); string aComments = string.IsNullOrEmpty(order.AgreeComments) ? "" : order.AgreeComments.Replace("\r\n", "<br/>"); string fullTable = String.Format("<table width='100%'><tr><td colspan='2'>{0}</td></tr><tr><td colspan='2'>{1}</td></tr><tr><td width='50%'>{2}</td><td width='50%'>{3}</td></tr></table>", htmlFirstTRTable, htmlInfoTable, htmlDatesTable, aComments); return style + fullTable; } catch (Exception e) { Logger.info("Ошибка при формировании html представления " + e.ToString(), Logger.LoggerSource.server); return ""; } }
public static ReturnMessage AddComment(CranTaskInfo task, string comment) { Logger.info("Добавление комментария к заявке на работу крана", Logger.LoggerSource.server); try { string result = ""; OrdersUser currentUser = OrdersUser.loadFromCache(HttpContext.Current.User.Identity.Name); VotGESOrdersEntities eni = new VotGESOrdersEntities(); CranTask tbl = new CranTask(); CranTask tsk = (from t in eni.CranTask where t.Number == task.Number select t).FirstOrDefault(); if (tsk == null) { return new ReturnMessage(false, "Заявка не найдена"); } tbl = tsk; if (!string.IsNullOrEmpty(task.AgreeComments)) task.AgreeComments += "\r\n"; task.AgreeComments += String.Format("{2} {0}:\r\n {1}", currentUser.FullName, comment, DateTime.Now.ToString("dd.MM.yyyy HH:mm")); tbl.AgreeComment = task.AgreeComments; eni.SaveChanges(); string message = String.Format("Заявка на работу крана \"{0}\" №{1}. Комментарий", task.CranName, task.CranNumber); MailContext.sendCranTask(message, new CranTaskInfo(tbl)); if (Managers != null) { if (!Managers.Contains(task.Manager)) { Managers.Add(task.Manager); } } else ReadManagers(); return new ReturnMessage(true, "Комментарий добавлен"); } catch (Exception e) { Logger.info("Ошибка при создании/изменении заявки на работу крана " + e.ToString(), Logger.LoggerSource.server); return new ReturnMessage(false, "ошибка при добавлении комментария"); } }
public static ReturnMessage CreateCranTask(CranTaskInfo task) { Logger.info("Создание/изменение заявки на работу крана", Logger.LoggerSource.server); try { string result = ""; string message = String.Format("Заявка на работу крана \"{0}\" №", task.CranName); OrdersUser currentUser = OrdersUser.loadFromCache(HttpContext.Current.User.Identity.Name); VotGESOrdersEntities eni = new VotGESOrdersEntities(); CranTask tbl = new CranTask(); if (task.init) { Logger.info("Определение номера заявки на кран", Logger.LoggerSource.server); tbl.State = "new"; CranTask tsk = (from t in eni.CranTask orderby t.Number descending select t).FirstOrDefault(); task.DateCreate = DateTime.Now; if (tsk != null) { task.Number = tsk.Number + 1; } else { task.Number = 1; } tbl.Allowed = false; tbl.Denied = false; tbl.Author = currentUser.Name; tbl.DateCreate = task.DateCreate; task.Author = currentUser.FullName; eni.CranTask.AddObject(tbl); result = "Заявка на кран успешно создана"; } else { CranTask tsk = (from t in eni.CranTask where t.Number == task.Number select t).FirstOrDefault(); if (tsk == null) { return new ReturnMessage(false, "Заявка не найдена"); } tbl = tsk; result = "Заявка на кран успешно изменена"; } message += task.Number + ". "; if ((task.NeedEndDate <= task.NeedStartDate) || (task.Allowed && (task.AllowDateEnd <= task.AllowDateStart))) { return new ReturnMessage(false, "Дата окончания заявки больше чем дата начала"); } tbl.Number = task.Number; tbl.CranName = task.CranName; tbl.AgreeComment = task.AgreeComments; tbl.NeedDateStart = task.NeedStartDate; tbl.NeedDateEnd = task.NeedEndDate; tbl.Comment = task.Comment; tbl.Manager = task.Manager; tbl.CranNumber = task.CranNumber; if (task.AgreeDict != null) tbl.AgreeUsersIDS = string.Join(";", task.AgreeDict.Keys); if (task.Finished) { tbl.State = "finished"; result = "Заявка на кран завершена"; tbl.RealDateStart = task.RealDateStart; tbl.RealDateEnd = task.RealDateEnd; tbl.AuthorFinish = currentUser.Name; tbl.Finished = true; message += " Заявка завершена"; } else if (task.Allowed) { tbl.AllowedDateStart = task.AllowDateStart; tbl.AllowedDateEnd = task.AllowDateEnd; tbl.RealDateStart = task.AllowDateStart; tbl.RealDateEnd = task.AllowDateEnd; tbl.Denied = false; tbl.Allowed = true; tbl.Cancelled = false; tbl.State = "allowed"; task.AuthorAllow = currentUser.FullName; result = "Заявка на кран разрешена"; message += " Заявка разрешена"; } else if (task.Denied) { tbl.AllowedDateStart = null; tbl.AllowedDateEnd = null; tbl.RealDateEnd = null; tbl.RealDateStart = null; tbl.Allowed = false; tbl.Denied = true; tbl.Cancelled = false; tbl.State = "denied"; task.AuthorAllow = currentUser.FullName; result = "Заявка на кран отклонена"; message += " Заявка отклонена"; } else if (task.Cancelled) { tbl.State = "cancelled"; tbl.Denied = false; tbl.Allowed = false; tbl.Cancelled = true; tbl.AuthorAllow = null; tbl.AllowedDateStart = null; tbl.AllowedDateEnd = null; tbl.RealDateEnd = null; tbl.RealDateStart = null; result = "Заявка на кран снята"; message += " Заявка снята"; } else if (!task.init) { message += " Заявка изменена"; } if (task.Allowed || task.Denied) { tbl.AuthorAllow = currentUser.Name; } eni.SaveChanges(); MailContext.sendCranTask(message, new CranTaskInfo(tbl)); if (Managers != null) { if (!Managers.Contains(task.Manager)) { Managers.Add(task.Manager); } } else ReadManagers(); return new ReturnMessage(true, result); } catch (Exception e) { Logger.info("Ошибка при создании/изменении заявки на работу крана " + e.ToString(), Logger.LoggerSource.server); return new ReturnMessage(false, "Ошибка при создании/изменении заявки на работу крана"); } }
public ReturnMessage FinishCranTask(CranTaskInfo task) { return CranTaskInfo.CreateCranTask(task); }
public ReturnMessage CancelCranTask(CranTaskInfo task) { return CranTaskInfo.CreateCranTask(task); }
public ReturnMessage CommentCranTask(CranTaskInfo task,string comment) { return CranTaskInfo.AddComment(task, comment); }