Beispiel #1
0
 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
             });
         }
     }
 }
Beispiel #2
0
        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());
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
 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());
     }
 }
Beispiel #5
0
 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);
         }
     }
 }
Beispiel #6
0
 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)));
     }
 }