Exemplo n.º 1
0
        public string GetADEmployeeIDByEmployeeIDInDB(int id)
        {
            string userADEmployeeID = "";

            Employee employee = RepositoryFactory.GetRepository <IEmployeeRepository>().GetById(id);

            if (employee != null)
            {
                if (String.IsNullOrEmpty(employee.ADEmployeeID) == false)
                {
                    userADEmployeeID = employee.ADEmployeeID;
                }
                else
                {
                    userADEmployeeID = ADHelper.GetADEmployeeIDBySearchStringInAD(RPCSHelper.NormalizeAndTrimString(employee.FullName));
                }
            }

            return(userADEmployeeID);
        }
Exemplo n.º 2
0
        public FileContentResult ExportApproveHoursToExcel(string hoursStartDate, string hoursEndDate, string projectId, TSRecordStatus?tsRecordStatus)
        {
            //Получение пользователя
            int userEmployeeID = _userService.GetEmployeeForCurrentUser().ID;

            int      intProjectId;
            DateTime startDate = DateTime.Today;
            DateTime endDate   = DateTime.Today;

            DateTime.TryParse(hoursStartDate, out startDate);
            DateTime.TryParse(hoursEndDate, out endDate);
            startDate = startDate == DateTime.MinValue ? DateTime.MinValue : startDate;
            endDate   = endDate == DateTime.MinValue ? DateTime.MaxValue : endDate;

            int.TryParse(projectId, out intProjectId);


            var tsHoursRecordStatus = TSRecordStatus.All;

            if (tsRecordStatus != null)
            {
                tsHoursRecordStatus = (TSRecordStatus)tsRecordStatus;
            }

            var recordList = _tsHoursRecordService.GetTSRecordsForApproval(userEmployeeID,
                                                                           startDate, endDate, intProjectId, tsHoursRecordStatus);
            var projectsFullName = recordList.Select(x => x.Project.ShortName)
                                   .GroupBy(x => x).Select(group => group.FirstOrDefault()).OrderBy(x => x).ToList();

            var listEmployeesId = recordList.GroupBy(x => x.EmployeeID)
                                  .Select(x => x.Key).ToList();
            var listEmployees = _employeeService.GetCurrentEmployees(new DateTimeRange(startDate, endDate)).Where(x => listEmployeesId.Any(y => y.Value == x.ID)).OrderBy(x => x.LastName);

            var projectList = string.Join(",", projectsFullName);

            byte[] binData = null;

            DataTable dataTable = new DataTable();

            dataTable.Columns.Add("EmployeeFullName", typeof(string)).Caption = "Сотрудник";
            dataTable.Columns["EmployeeFullName"].ExtendedProperties["Width"] = (double)40;
            dataTable.Columns.Add("RecordDate", typeof(DateTime)).Caption     = "Отчетная дата";
            dataTable.Columns["RecordDate"].ExtendedProperties["Width"]       = (double)12;
            dataTable.Columns.Add("Project", typeof(string)).Caption          = "Проект";
            dataTable.Columns["Project"].ExtendedProperties["Width"]          = (double)40;
            dataTable.Columns.Add("Hours", typeof(double)).Caption            = "Трудозатраты (ч)";
            dataTable.Columns["Hours"].ExtendedProperties["Width"]            = (double)15;
            dataTable.Columns.Add("Description", typeof(string)).Caption      = "Состав работ";
            dataTable.Columns["Description"].ExtendedProperties["Width"]      = (double)90;
            dataTable.Columns.Add("RecordStatus", typeof(string)).Caption     = "Статус";
            dataTable.Columns["RecordStatus"].ExtendedProperties["Width"]     = (double)20;


            //Может быть много сотрудников, для созгласования трудозатрат
            foreach (var employee in listEmployees)
            {
                foreach (var employeeHoursRecord in recordList)
                {
                    if (employeeHoursRecord.EmployeeID == employee.ID)
                    {
                        dataTable.Rows.Add(employee.FullName, employeeHoursRecord.RecordDate.Value,
                                           employeeHoursRecord.Project.ShortName, employeeHoursRecord.Hours,
                                           RPCSHelper.NormalizeAndTrimString(employeeHoursRecord.Description), employeeHoursRecord.RecordStatus.GetAttributeOfType <DisplayAttribute>().Name);
                    }
                }
            }

            using (MemoryStream stream = new MemoryStream())
            {
                using (SpreadsheetDocument doc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
                {
                    WorkbookPart workbookPart = ExcelHelper.CreateWorkbookPart(doc, "Трудозатраты сотрудников");

                    WorksheetPart rId1 = ExcelHelper.CreateWorksheetPartAndImportDataTable(workbookPart, "rId1", 1, 1, (uint)dataTable.Columns.Count,
                                                                                           "Трудозатраты по проектам: " + projectList + ", на даты: " + hoursStartDate + " - " + hoursEndDate + ", со статусом: " + tsRecordStatus.GetAttributeOfType <DisplayAttribute>().Name,
                                                                                           dataTable, 3, 1);

                    doc.WorkbookPart.Workbook.Save();
                }

                stream.Position = 0;
                BinaryReader b = new BinaryReader(stream);
                binData = b.ReadBytes((int)stream.Length);
            }
            return(File(binData, ExcelHelper.ExcelContentType, "ApproveHours" + DateTime.Now.ToString("ddMMyyHHmmss") + ".xlsx"));
        }
Exemplo n.º 3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        //Как приложение будет обрабатывать запрос
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime,
                              IOptions <ADConfig> adOptions, IOptions <BitrixConfig> bitrixConfig, IOptions <OnlyOfficeConfig> onlyOfficeOptions,
                              IOptions <TimesheetConfig> timesheetOptions, IOptions <SMTPConfig> smtpOptions, IOptions <CommonConfig> commonOptions,
                              IServiceProvider serviceProvider)
        {
            InitializeDatabase(app);
            if (env.IsDevelopment())
            {
                //Раскоментить, когда сделаем кастомные ошибки!!!
                //app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                //Todo отображение ошибок в ProductionEnvironment - позже убрать!
                //app.UseDeveloperExceptionPage();
                //app.UseHsts();
            }
            //TODO В будущем убрать из продакшн версии отображение страницы девелопмент ошибок
            app.UseDeveloperExceptionPage();

            //Страницы ошибок
            app.UseStatusCodePages(async context =>
            {
                context.HttpContext.Response.ContentType = "text/plain";

                await context.HttpContext.Response.WriteAsync(
                    "Status code page, status code: " +
                    context.HttpContext.Response.StatusCode);
            });

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();
            app.UseAuthentication();
            app.UseSession();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "timesheetRoute",
                    template: "{area:exists}/{controller=Timesheet}/{action=Index}/{id?}"
                    );

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });


            //Quartz
            //var quartz = new QuartZStartup(adOptions, bitrixConfig, onlyOfficeOptions, timesheetOptions);
            //lifetime.ApplicationStarted.Register(quartz.Start);
            //lifetime.ApplicationStopped.Register(quartz.Stop);
            //QuartzHelper.Configure(quartz.scheduler);



            RpcsControls.Configure(app.ApplicationServices.GetService <IServiceProvider>());
            AutocompleteControls.Configure(app.ApplicationServices.GetService <IServiceProvider>());
            PermissionControls.Configure(app.ApplicationServices.GetService <IServiceProvider>());
            RPCSHelper.Configure(app.ApplicationServices.GetService <IServiceProvider>());
            RPCSEmailHelper.Configure(app.ApplicationServices.GetService <IServiceProvider>());
            Daykassa.Configure(app.ApplicationServices.GetService <IServiceProvider>());
        }