/// <summary> /// Удаление подпись документа /// </summary> /// <param name="signId">Идентификатор подписи</param> /// <returns>Результат операции</returns> public bool RemoveSign(int signId) { var sign = _docPage.Doc.DocSigns.First(i => i.Id == signId.ToString()); if (sign == null || sign.Unavailable) { // Подпись недоступна, возможно она уже удалена. _docPage.ShowMessage(_docPage.Resx.GetString("msgDelSignUnavaible")); return(false); } try { if (sign.SignType == 1) { var docTrans = Transaction.GetTransactionsByDocId(_docPage.Doc.DocId); if (docTrans.Count > 0) { Transaction.RemoveTrans(_docPage.Doc.Id); } } DocSign.RemoveSign(sign.Id); _docPage.Doc.GetSignsFromDb(); } catch (Exception e) { Logger.WriteEx(e); _docPage.ShowMessage(e.Message); return(false); } return(true); }
/// <summary> /// Формирование разметки клиентского скрипта для кнопки удаления подписи /// </summary> /// <param name="w">Поток вывода</param> /// <param name="sign">Объект подпись</param> private void RenderDeleteSignEventOnClick(TextWriter w, DocSign sign) { if (sign.EmployeeId == _docPage.CurrentUser.EmployeeId || sign.EmployeeInsteadOfId == _docPage.CurrentUser.EmployeeId) { w.Write($"cmdasync('cmd', 'RemoveSign','IdSign', '{sign.SignId}');"); } else { w.Write("v4_showConfirm('{0}','{1}','{2}','{3}',{4},{5},'{6}','{7}','{8}',{9},{10});", HttpUtility.JavaScriptStringEncode(string.Format( _docPage.Resx.GetString("msgDelSign").Replace(Environment.NewLine, "<br>"), sign.EmployeeInsteadOfFio)), HttpUtility.JavaScriptStringEncode(_docPage.Resx.GetString("alertWarning")), HttpUtility.JavaScriptStringEncode(_docPage.Resx.GetString("CONFIRM_StdCaptionYes")), HttpUtility.JavaScriptStringEncode(_docPage.Resx.GetString("CONFIRM_StdCaptionNo")), 100, 100, HttpUtility.JavaScriptStringEncode($"cmdasync('cmd', 'RemoveSign','IdSign', '{sign.SignId}');"), "", HttpUtility.JavaScriptStringEncode("sign-common"), 500, 150); } }
/// <summary> /// Подлучение текста сообщения для отправки после подписания завершающей подписью /// </summary> /// <returns>Текст сообщения</returns> public string GetFinalSignMessage() { var signText = ""; if (!_docPage.Doc.Unavailable && _docPage.Doc.TypeId > 0) { signText = DocSign.GetSignText(_docPage.Doc.TypeId, 1); } if (signText.Length == 0) { signText = _docPage.Resx.GetString("ntf_DocIsCompleted"); } return(signText); }
/// <summary> /// Добавление подписи под документом /// </summary> /// <param name="employeeInsteadOfId">Идентификатор сотрудника ЗА</param> /// <param name="signType">Тип подписи(1-завершающая; 0-обычная)</param> /// <param name="isFirstSign">Признак первой подписи под документом</param> public void AddSign(int employeeInsteadOfId, int signType, out bool isFirstSign) { isFirstSign = !_docPage.Doc.Signed; var sign = new DocSign { DocId = _docPage.Doc.DocId, EmployeeId = _docPage.CurrentUser.EmployeeId, EmployeeInsteadOfId = employeeInsteadOfId, SignType = Convert.ToByte(signType), Date = DateTime.Now }; sign.Create(); _docPage.Doc.GetSignsFromDb(); }
/// <summary> /// Удалить все подписи документа /// </summary> /// <returns></returns> public bool RemoveSignsAll() { _docPage.Doc.GetSignsFromDb(); // кешируются в свойствах объекта var singsSorted = _docPage.Doc.DocSigns.AsEnumerable().OrderByDescending(o => o.Date).ToList(); foreach (var s in singsSorted) { DocSign.RemoveSign(s.Id); } _docPage.Doc.GetSignsFromDb(); if (!_docPage.Doc.Signed) { return(true); } _docPage.ShowMessage(_docPage.Resx.GetString("msgDelSignAll"), _docPage.Resx.GetString("CONFIRM_StdTitle")); return(false); }