Beispiel #1
0
        public static List <WorkerReport> GetWorkerReport(DateTime dateFrom, DateTime dateTo)
        {
            MySqlCommand cmd = new MySqlCommand("GetWorkerReport", new MySqlConnection(connectionString));

            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add(new MySqlParameter(("_dateFrom"), dateFrom));
            cmd.Parameters.Add(new MySqlParameter(("_dateTo"), dateTo));


            cmd.Connection.Open();

            MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            List <WorkerReport> workerReports = new List <WorkerReport>();

            while (rdr.Read())
            {
                WorkerReport workerReport = new WorkerReport();

                workerReport.workerName    = rdr[0].ToString();
                workerReport.workerSurname = rdr[1].ToString();
                workerReport.date          = DateTime.Parse(rdr[2].ToString());
                workerReport.distance      = double.Parse(rdr[3].ToString());

                workerReports.Add(workerReport);
            }
            rdr.Close();

            return(workerReports);
        }
        public async Task <IActionResult> Edit(int id, [Bind("ID,Hours,Costs,Date,EmployeeID,ProjectID,TaskID")] WorkerReport workerReport)
        {
            if (id != workerReport.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(workerReport);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!WorkerReportExists(workerReport.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmployeeID"] = new SelectList(_context.Employees, "ID", "FullName", workerReport.EmployeeID);
            ViewData["ProjectID"]  = new SelectList(_context.Projects, "ID", "Name", workerReport.ProjectID);
            ViewData["TaskID"]     = new SelectList(_context.Tasks, "ID", "Description", workerReport.TaskID);
            return(View(workerReport));
        }
        public async Task <IActionResult> Create([Bind("ID,Hours,Costs,Date,EmployeeID,ProjectID,TaskID")] WorkerReport workerReport)
        {
            if (ModelState.IsValid)
            {
                _context.Add(workerReport);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmployeeID"] = new SelectList(_context.Employees, "ID", "FullName", workerReport.EmployeeID);
            ViewData["ProjectID"]  = new SelectList(_context.Projects, "ID", "Name", workerReport.ProjectID);
            ViewData["TaskID"]     = new SelectList(_context.Tasks, "ID", "Description", workerReport.TaskID);
            return(View(workerReport));
        }
Beispiel #4
0
        private async Task RunAsync(CancellationToken cancellationToken)
        {
            AzureQueue   queue   = new AzureQueue();
            DBHandler    db      = new linqDBHandler();
            ExcelBuilder builder = new ExcelBuilder();
            AzureBlob    blob    = new AzureBlob();

            while (!cancellationToken.IsCancellationRequested)
            {
                var message = await queue.deleteMessageAsync();

                string[] splitted = message.Split(',');
                DateTime weekDate = DateTime.Parse(splitted[1]);
                long     userId;
                long.TryParse(splitted[0], out userId);
                List <Clock>  clocks  = db.getClocks(userId, weekDate);
                List <string> columns = new List <string>();
                columns.Add("Company");
                columns.Add("Start Time");
                columns.Add("End Time");

                List <List <string> > rows = new List <List <string> >();
                foreach (Clock shift in clocks)
                {
                    List <string> row = new List <string>();
                    row.Add(shift.Shift.Company.name);
                    row.Add(shift.startTime.ToString());
                    row.Add(shift.endTime.ToString());

                    rows.Add(row);
                }

                Workbook workBook = builder.write(columns, rows);
                workBook.SaveAs("temp.xlsx");
                string url = await blob.uploadFileAsync("temp.xlsx", userId + "_" + weekDate + ".xlsx");

                File.Delete("temp.xlsx");

                WorkerReport workerReport = new WorkerReport();
                workerReport.workerId = userId;
                workerReport.url      = url;
                workerReport.date     = weekDate;

                db.addWorkerReport(workerReport);

                Trace.TraceInformation("new report : " + url);
            }
        }
        public void GenerateWorkerReport()
        {
            employeeReports.Clear();

            int toPassDaysOff    = 0;
            int toPassDaysWorked = 0;

            foreach (Worker item in App.WorkerList)
            {
                if (App.Requests.Count > 0)
                {
                    var workersRequestList = App.Requests.Where(u => u.EmployeeID == item.ID).ToList();
                    if (workersRequestList != null)
                    {
                        toPassDaysOff = workersRequestList.Where(u => u.Approved == true).Select(u => u.Approved).Count();
                    }
                }

                if (App.Labors.Count > 0)
                {
                    var workersLaborList = App.Labors.Where(u => u.EmployeeID == item.ID).ToList();
                    if (workersLaborList != null)
                    {
                        toPassDaysWorked = workersLaborList.Where(u => u.TimeDateStart != null).Select(u => u.TimeDateStart.Value.Date).GroupBy(u => u.Date).Count();
                    }
                }


                WorkerReport workerReport = new WorkerReport()
                {
                    WorkerLastName = item.WorkerLastName,
                    DaysOff        = toPassDaysOff,
                    DaysWorked     = toPassDaysWorked
                };

                employeeReports.Add(workerReport);
            }
        }