public DtoMessage CreateTimeSheet(int idDepartment, DateTime dateBeginPeriod, DateTime dateEndPeriod, DtoApprover approver, IEnumerable <DtoFactStaffEmployee> employees = null) { using (var db = new KadrDataContext()) { try { //todo:тут надо корректно вытаскивать согласователя var timeSheet = new TimeSheetManaget(idDepartment, dateBeginPeriod, dateEndPeriod, approver.EmployeeLogin, db); timeSheet.GenerateTimeSheet(employees.ToArray()); return(new DtoMessage { Result = true }); } catch (System.Exception ex) { return(new DtoMessage { Message = ex.Message, Result = false }); } } }
private string GenerateMailBody(DtoApprover approver, int idTimeSheet, bool approveResult, string comment, string departmentName, bool isApproveFinished = false) { var timeSheetAppLink = new TagBuilder("a"); timeSheetAppLink.Attributes.Add("href", _appDominUrl); timeSheetAppLink.InnerHtml = "ИС \"Табель\""; var timeSheetShowLink = new TagBuilder("a"); timeSheetShowLink.Attributes.Add("href", _appDominUrl + string.Format("TabelShow/{0}", idTimeSheet)); timeSheetShowLink.InnerHtml = "просмотр табеля"; var timeSheetPrintLink = new TagBuilder("a"); timeSheetPrintLink.Attributes.Add("href", _appDominUrl + string.Format("TabelPdf/{0}", idTimeSheet)); timeSheetPrintLink.InnerHtml = "печать табеля"; var timeSheetApprovalLink = new TagBuilder("a"); timeSheetApprovalLink.Attributes.Add("href", _appDominUrl + string.Format("Main/TimeSheetApprovalNew?idtimesheet={0}", idTimeSheet)); timeSheetApprovalLink.InnerHtml = "согласование табеля"; var stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("Здравствуйте, {0} {1}.", approver.Name, approver.Patronymic); stringBuilder.AppendLine("</br>"); if (isApproveFinished) { stringBuilder.AppendFormat("Табель для структурного подразделения {0} успешно согласован.", departmentName); } else { if (approveResult) { stringBuilder.AppendFormat( "Вам на согласование был направлен табель рабочего времени структурного подразделения {0}.", departmentName); stringBuilder.AppendFormat( "Для того, что бы приступить к согласованию тебеля перейдите по ссылке: {0}. ", timeSheetApprovalLink); } else { stringBuilder.AppendFormat("Согласование табеля для структурного подоразделения {0} было отклонено по причине: {1}", departmentName, comment); } } stringBuilder.AppendLine("</br>"); stringBuilder.AppendFormat("Вы можете просмотреть табель перейдя по ссылке {0}, ", timeSheetShowLink); stringBuilder.AppendFormat("вывести его на печать: {0}. ", timeSheetPrintLink); stringBuilder.AppendFormat("или просмотреть историю согласования: {0}. ", timeSheetApprovalLink); stringBuilder.AppendFormat("Так же вы можете посетить {0}. ", timeSheetAppLink); return(stringBuilder.ToString()); }
public bool CanApprove(int idTimeSheet, DtoApprover approver) { using (var db = new KadrDataContext()) { //var approver = GetCurrentApproverByLogin(employeeLogin); var timeSheet = db.TimeSheet.FirstOrDefault(f => f.id == idTimeSheet); var timeSheetApprovalStep = GetTimeSheetApproveStep(idTimeSheet) + 1; if (timeSheet == null) { return(false); } var approveDepartment = approver.GetDepartmentApproverNumbers(timeSheet.idDepartment) .FirstOrDefault(f => f.ApproveNumber == timeSheetApprovalStep); return(approveDepartment != null && approveDepartment.ApproveNumber == timeSheetApprovalStep); } }
public DtoFactStaffEmployee[] GetEmployeesForTimeSheet(int idDepartment, DtoApprover approver, DateTime dateStart, DateTime dateEnd) { using (var db = new KadrDataContext()) { //var depsId = GetDepartmentsIdList(idDepartment); var loadOptions = new DataLoadOptions(); loadOptions.LoadWith((FactStaffWithHistory fswh) => fswh.PlanStaff); loadOptions.LoadWith((PlanStaff ps) => ps.Post); loadOptions.LoadWith((Post p) => p.Category); loadOptions.LoadWith((PlanStaff ps) => ps.WorkShedule); loadOptions.LoadWith((FactStaffWithHistory fswh) => fswh.Employee); loadOptions.LoadWith((OK_Otpusk oko) => oko.OK_Otpuskvid); db.LoadOptions = loadOptions; var ts = new TimeSheetManaget(idDepartment, dateStart, dateEnd, approver.EmployeeLogin, db); return (ts.GetAllEmployees() .Select(s => DtoClassConstructor.DtoFactStaffEmployee(db, s.idFactStaffHistory)) .ToArray()); } }
public bool TimeSheetApproval(int idTimeSheet, DtoApprover employeeLogin, bool result, string comments, string appDominUrl) { using (var db = new KadrDataContext()) { if (!CanApprove(idTimeSheet, employeeLogin)) { return(false); } var approvalStep = GetTimeSheetApproveStep(idTimeSheet); var timeSheet = GetTimeSheet(idTimeSheet, true); var idDepartment = timeSheet.Department.IdDepartment; var departmentName = db.Department.First(f => f.id == idDepartment).DepartmentSmallName; //var approver = GetCurrentApproverByLogin(employeeLogin) // .GetDepartmentApproverNumbers(idDepartment) // .First(w => w.ApproveNumber == approvalStep + 1); var approver = employeeLogin.GetDepartmentApproverNumbers(idDepartment) .First(w => w.ApproveNumber == approvalStep + 1); try { var timeSheetApproval = new TimeSheetApproval { ApprovalDate = DateTime.Now, idTimeSheet = idTimeSheet, idApprover = approver.IdApprover, Result = result, Comment = comments }; db.TimeSheetApproval.InsertOnSubmit(timeSheetApproval); db.SubmitChanges(); Task.Run( () => EmailSending(employeeLogin.EmployeeLogin, idTimeSheet, result, comments, approvalStep, departmentName, appDominUrl)); return(true); } catch (System.Exception e) { var s = e.Message; return(false); } } }
public DtoTimeSheet CreateFakeTimeSheet(int idDepartment, DateTime dateStart, DtoApprover approver) { using (var db = new KadrDataContext()) { if (db.TimeSheet.Any(a => a.idDepartment == idDepartment && a.DateBeginPeriod == dateStart)) { throw new System.Exception("Табель на этот месяц уже сформирован."); } var dtoApproverDepartment = approver.DtoApproverDepartments.FirstOrDefault(w => w.IdDepartment == idDepartment); var ts = new TimeSheet { idDepartment = idDepartment, DateComposition = DateTime.Now, DateBeginPeriod = dateStart, DateEndPeriod = dateStart.AddMonths(1).AddDays(-1), ApproveStep = 0, IsFake = true, idCreater = dtoApproverDepartment.IdApprover }; db.TimeSheet.InsertOnSubmit(ts); db.SubmitChanges(); return(DtoClassConstructor.DtoTimeSheet(db.TimeSheetView.Single(s => s.id == ts.id))); } }