// GET: ProjectReport
        public ActionResult Index(string id)
        {
            var projectId = ObjectId.Parse(id);
            var model     = new ProjectReportViewModel(projectId);

            return(View(model));
        }
Beispiel #2
0
        void SetData(SLDocument document, ProjectReportViewModel reportVm)
        {
            for (int i = 0; i < reportVm.Rows.Count; i++)
            {
                var currentRow = reportVm.Rows[i];

                int rownum = i + 2;

                document.SetCellValue(rownum, 1, currentRow.WorkObject);
                document.SetCellValue(rownum, 2, currentRow.ProjectCode);
                document.SetCellValue(rownum, 3, currentRow.ProjectName);
                document.SetCellValue(rownum, 4, currentRow.Name);



                for (int j = 0; j < currentRow.Hours.Count; j++)
                {
                    document.SetCellValue(rownum, j + 5, currentRow.Hours[j]);
                }


                document.SetCellValue(rownum, reportVm.MyColumns.Count + 5, currentRow.TotalHours);
                document.SetCellValue(rownum, reportVm.MyColumns.Count + 6, currentRow.Money);
            }
        }
Beispiel #3
0
        public string CreateFile(ProjectReportViewModel reportVm)
        {
            string path     = AppDomain.CurrentDomain.BaseDirectory + "Content/";
            string fileName = Path.GetRandomFileName();//"Отчёт по сотрудникам.xlsx";

            string fullPath = path + fileName;

            SLDocument sl = new SLDocument();

            // set a boolean at "A1"
            //sl.SetCellValue("A1", true);


            SetColumns(sl, reportVm);
            SetData(sl, reportVm);

            try
            {
                if (File.Exists(fullPath))
                {
                    File.Delete(fullPath);
                }
            }
            catch (Exception)
            {
                var random = new Random();
                fullPath = path + random.Next() + "_" + fileName;
            }


            sl.SaveAs(fullPath);

            return(fullPath);
        }
        public void UpdateReportNotAccessByLoginIdRptId(ProjectReportViewModel model)
        {
            var strsql_update = "delete from report_not_access ";

            strsql_update = strsql_update + " where login_id = '" + model.Admin_login_id + "' and fmrs_system = '" + model.Modules + "'";

            var sql = "select id, rpt_name, g.display_order  from report r, report_group g";

            sql = sql + " where group_id = " + model.Group_id;
            sql = sql + " and report_id = id ";
            sql = sql + " and hosp_ind = 'Y' ";
            sql = sql + " order by g.display_order ";

            string  report_id        = "";
            int     access_right_cnt = 0;
            DataSet ds = new DataSet();

            using (SqlConnection sqlConn = new SqlConnection(Context.Database.GetDbConnection().ConnectionString))
            {
                using (SqlCommand sqlCmd = new SqlCommand(sql, sqlConn))
                {
                    SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);
                    adp.Fill(ds);
                    if (ds != null && ds.Tables.Count != 0 && ds.Tables[0].Rows.Count > 0)
                    {
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            report_id = dr["id"].ToString();
                            int st = model.Access_right.IndexOf("Access_right_" + report_id + ":") + 14 + report_id.Length + 1;
                            access_right_cnt = Convert.ToInt32(model.Access_right.Substring(st, 1));
                            if (access_right_cnt == 0)
                            {
                                strsql_update = strsql_update + "insert into report_not_access ";
                                strsql_update = strsql_update + " (login_id, report_id, fmrs_system) ";
                                strsql_update = strsql_update + " values ";
                                strsql_update = strsql_update + "('" + model.Admin_login_id + "', " + report_id + ", '" + model.Modules + "')";
                            }
                        }
                    }
                }
            }
            using (SqlConnection sqlConn = new SqlConnection(Context.Database.GetDbConnection().ConnectionString))
            {
                using (SqlCommand sqlCmd = new SqlCommand(strsql_update, sqlConn))
                {
                    sqlCmd.Connection.Open();
                    sqlCmd.ExecuteNonQuery();
                }
            }
        }
Beispiel #5
0
        public IActionResult UpdateProjectReport(ProjectReportViewModel model)
        {
            try
            {
                AdminService.UpdateProjectReport(model);

                TempData["SuccessMessage"] = Resource.SaveSuccess;
                return(RedirectToAction("ProjectReport", new { modules = model.Modules, admin_login_id = model.Admin_login_id, group_id = model.Group_id }));
            }
            catch (Exception ex)
            {
                TempData["ErrorMessage"] = Resource.SaveFail + ex;
                return(RedirectToAction("ProjectReport", new { modules = model.Modules, admin_login_id = model.Admin_login_id, group_id = model.Group_id }));
            }
        }
Beispiel #6
0
        public IActionResult ProjectReport(string modules, string admin_login_id, int group_id)
        {
            Session.SetString("current_sys", modules);
            var user_group = GetUserGroup(modules);

            SetMenuDropDownList(user_group);
            ViewBag.IsHtmlMessage  = true;
            ViewBag.SuccessMessage = TempData["SuccessMessage"] != null ? TempData["SuccessMessage"] : ViewBag.SuccessMessage;
            ViewBag.ErrorMessage   = TempData["ErrorMessage"] != null ? TempData["ErrorMessage"] : ViewBag.ErrorMessage;

            ProjectReportViewModel model = new ProjectReportViewModel();

            model.Report_list    = AdminService.GetProjectReportList(modules, admin_login_id, group_id);
            model.Admin_login_id = admin_login_id;
            model.Group_id       = group_id;
            model.Modules        = modules;
            return(View(model));
        }
Beispiel #7
0
        void SetColumns(SLDocument document, ProjectReportViewModel reportVm)
        {
            SLStyle style = document.CreateStyle();

            style.SetVerticalAlignment(VerticalAlignmentValues.Center);


            style.Alignment.Horizontal = HorizontalAlignmentValues.Left;

            style.Alignment.ReadingOrder = SLAlignmentReadingOrderValues.LeftToRight;
            style.Alignment.ShrinkToFit  = true;
            style.Alignment.TextRotation = 90;


            //document.SetCellValue(1, 1, "Проект");
            //document.SetCellValue(1, 2, "Объект");
            //document.SetCellValue(1, 3, "Код проекта");
            //document.SetCellValue(1, 4, "Имя");


            document.SetCellValue(1, 1, "Объект");
            document.SetCellValue(1, 2, "Код проекта");
            document.SetCellValue(1, 3, "Название проекта");
            document.SetCellValue(1, 4, "Инженер");


            document.SetColumnWidth(1, 17);
            document.SetColumnWidth(2, 20);
            document.SetColumnWidth(3, 17);
            document.SetColumnWidth(4, 17);

            for (int i = 0; i < reportVm.MyColumns.Count; i++)
            {
                document.SetCellValue(1, i + 5, reportVm.MyColumns[i]);

                document.SetColumnWidth(i + 5, 4);
                // style.SetCellStyle();
                document.SetCellStyle(1, i + 5, style);
            }

            document.SetCellValue(1, reportVm.MyColumns.Count + 5, "Всего часов");
            document.SetColumnWidth(reportVm.MyColumns.Count + 5, 17);
            document.SetCellValue(1, reportVm.MyColumns.Count + 6, "Деньги");
        }
        public async Task <IActionResult> GetProjectReport(int id)
        {
            ProjectReport pr = await _projectReportRepository.Get(id);

            IEnumerable <WorkPackageReportSnapshot> allWPRS = await _workPackageReportSnapshotRepository.GetAll();

            IEnumerable <WorkPackageReportSnapshot> lowWPRS = allWPRS.Where(x => x.ProjectReportId == id && !x.IsHighWorkPackage); //lowWorkPackage

            IEnumerable <WorkPackageReportSnapshot> highWPRS = allWPRS.Where(x => x.ProjectReportId == id && x.IsHighWorkPackage); //highWP

            IEnumerable <EmployeeProjectAssignment> allEmpProjectAssignments = await _employeeProjectAssignmentRepository.GetAll();

            IEnumerable <EmployeeProjectAssignment> projectAssignments = allEmpProjectAssignments.Where(x => x.ProjectId == pr.ProjectId);

            IEnumerable <Employee> employees = await _employeeRepository.GetAll();

            List <EmployeeNameViewModel> engineers = new List <EmployeeNameViewModel>();

            EmployeeNameViewModel pm = null;

            foreach (EmployeeProjectAssignment e in projectAssignments)
            {
                if (e.IsProjectManager)
                {
                    pm = new EmployeeNameViewModel(employees.Where(x => x.EmployeeId == e.EmployeeId).FirstOrDefault());
                }
                else
                {
                    engineers.Add(new EmployeeNameViewModel(employees.Where(x => x.EmployeeId == e.EmployeeId).FirstOrDefault()));
                }
            }

            ProjectReportViewModel projectReportView = new ProjectReportViewModel(pr, pm, engineers, lowWPRS.ToList(), highWPRS.ToList());

            return(Ok(projectReportView));
        }
Beispiel #9
0
 public void UpdateProjectReport(ProjectReportViewModel model)
 {
     ReportNotAccessRepository.UpdateReportNotAccessByLoginIdRptId(model);
 }
Beispiel #10
0
        public ProjectReportViewModel GetData()
        {
            var result = new ProjectReportViewModel();


            var span = DateEnd - DateBegin;

            int countDays = span.Days;

            result.MyColumns = new List <string>();
            for (int i = 0; i < countDays; i++)
            {
                result.MyColumns.Add(DateBegin.AddDays(i).ToShortDateString());
            }

            var timesheetsInterval =
                _tabelContext.Timesheets.Include("Employee")
                .Include("Project")
                .Where(ts => ts.Date >= DateBegin && ts.Date < DateEnd);


            var neededData = timesheetsInterval.Select(ts => new
            {
                EmployeeName = ts.Employee.Name,
                ProjectName  = ts.Project.Name,
                ProjectCode  = ts.Project.Code,
                Rate         = ts.Employee.Rate,
                ts.Project.WorkObject,
                ts.Hours,
                ts.Date
            });


            List <DateTime> reportDays = new List <DateTime>();

            for (int i = 0; i < countDays; i++)
            {
                reportDays.Add(DateBegin.AddDays(i));
            }

            var allProjects = neededData.Select(data => data.ProjectCode).Distinct();

            var projectEmployeeDict = new Dictionary <string, List <string> >();

            //у этого проекта такие то сотрудники
            foreach (var project in allProjects)
            {
                projectEmployeeDict[project] = neededData.Where(data => data.ProjectCode == project).Select(data => data.EmployeeName).Distinct().ToList();
            }

            //Заполняем тут данные о сотрудниках и проектах
            List <PrReportProject> reportProject = new List <PrReportProject>();

            foreach (var projectEmployee in projectEmployeeDict)
            {
                var newReportProject = new PrReportProject
                {
                    //  ProjectName = projectEmployee.Key,
                    ProjectCode    = projectEmployee.Key,
                    ReportEmployee = new List <PrReportEmployee>()
                };


                foreach (var employee in projectEmployee.Value)
                {
                    newReportProject.ReportEmployee.Add(new PrReportEmployee()
                    {
                        EmployeeName = employee
                    });
                }
                newReportProject.SetBeginAndEndDate(DateBegin, DateEnd);


                reportProject.Add(newReportProject);
            }

            //Записываем данные о часах
            foreach (var project in reportProject)
            {
                foreach (var employee in project.ReportEmployee)
                {
                    var workingHours =
                        neededData.Where(
                            data => data.EmployeeName == employee.EmployeeName && data.ProjectCode == project.ProjectCode)
                        .Select(data =>
                                new
                    {
                        WorkDate = data.Date,
                        WorkHour = data.Hours,
                        data.WorkObject,
                        data.ProjectCode
                    }).ToList();
                    project.WorkObject  = workingHours.First().WorkObject;
                    project.ProjectCode = workingHours.First().ProjectCode;
                    foreach (var workingHour in workingHours)
                    {
                        var roundedDate = new DateTime(workingHour.WorkDate.Year, workingHour.WorkDate.Month, workingHour.WorkDate.Day);
                        employee.Hours[roundedDate] = workingHour.WorkHour;
                    }
                }
            }


            //Записываем данные о зарплате  НЕДОДЕЛКА
            foreach (var project in reportProject)
            {
                foreach (var employee in project.ReportEmployee)
                {
                    employee.Rate = neededData.Where(data => data.EmployeeName == employee.EmployeeName)
                                    .Select(data => data.Rate)
                                    .FirstOrDefault();
                }
            }



            //Переделываем в формат грида

            result.Rows = new List <PrProjectViewModel>();

            var totalHoursDict = new Dictionary <DateTime, int>();
            var totalMoney     = 0.0;

            for (int i = 0; i < countDays; i++)
            {
                totalHoursDict[DateBegin.AddDays(i)] = 0;
            }



            foreach (var reportPrj in reportProject)
            {
                var hoursDict = new Dictionary <DateTime, int>();

                var neededProject =
                    neededData.FirstOrDefault(data => data.ProjectCode == reportPrj.ProjectCode);
                if (neededProject != null)
                {
                    reportPrj.ProjectName = neededProject.ProjectName;
                }

                for (int i = 0; i < countDays; i++)
                {
                    hoursDict[DateBegin.AddDays(i)] = 0;
                }

                double projectMoney = 0;

                foreach (var reportEmploy in reportPrj.ReportEmployee)
                {
                    var newEmployee = new PrProjectViewModel
                    {
                        Name        = reportEmploy.EmployeeName,
                        Rate        = reportEmploy.Rate,
                        ProjectName = reportPrj.ProjectName,
                        WorkObject  = reportPrj.WorkObject,
                        ProjectCode = reportPrj.ProjectCode,
                        Hours       = reportEmploy.Hours.Values.ToList()
                    };

                    result.Rows.Add(newEmployee);
                    totalMoney += newEmployee.Money;

                    foreach (var hour in reportEmploy.Hours)
                    {
                        if (!hoursDict.ContainsKey(hour.Key))
                        {
                            hoursDict[hour.Key] = 0;
                        }
                        hoursDict[hour.Key] += hour.Value;

                        if (!totalHoursDict.ContainsKey(hour.Key))
                        {
                            totalHoursDict[hour.Key] = 0;
                        }
                        totalHoursDict[hour.Key] += hour.Value;
                    }


                    projectMoney += newEmployee.Money;
                }

                result.Rows = result.Rows.OrderBy(row => row.ProjectCode).ToList();

                result.Rows.Add(new PrProjectViewModel(projectMoney)
                {
                    Hours       = hoursDict.Values.ToList(),
                    ProjectCode = reportPrj.ProjectCode + " Итого",
                    ProjectName = reportPrj.ProjectName + " Итого",
                    //  Rate = reportPrj.Rate   НЕДОДЕЛКА
                });
            }


            result.Projects = allProjects.ToList();
            result.Projects.Insert(0, "Все");

            if (!string.IsNullOrEmpty(ProjectFilter) && ProjectFilter != "Все")
            {
                result.Rows.RemoveAll(item => item.ProjectCode != ProjectFilter);
            }

            return(result);
        }