Producing a report on the attendance and departure of employees

Viewed 32

I hope you can help me in producing a report on the attendance and departure of employees

My code returns multiple rows per employee:

 HRBakEntities db = new HRBakEntities();

        var AttendanceReports = db.Employees
            .Join(                    /// Source Collection  
              db.EmployeesAttendances,                        /// Inner Collection  
              p => p.Id,                                /// PK  
              p => p.EmployeeId,                                /// FK  
              (Atten, Emp) => new { MyEmployees = Atten, MyAttending = Emp })   /// Result Collection  
       .Join(                    /// Source Collection  
              db.VacationsBalances,                        /// Inner Collection  
              e => e.MyEmployees.Id,                                /// PK  
              c => c.EmployeeId,                                /// FK  
              (Emp, vbalnc) => new { MyEmployees = Emp, VacationsBalances = vbalnc })   /// Result Collection  
        .Join(                    /// Source Collection  
              db.EmployeesStatus,                        /// Inner Collection  
              e => e.MyEmployees.MyEmployees.Id,                                /// PK  
              c => c.Appointment.EmployeeId,                                /// FK  
              (a, s) => new { MyEmployees = a, MyStatus = s })   /// Result Collection  
                      .Join(                    /// Source Collection  
              db.ViolationsStatusLogs,                        /// Inner Collection  
              e => e.MyEmployees.MyEmployees.MyEmployees.Id,                                 /// PK  
              c => c.EmployeesViolation.EmployeeId,                                /// FK  
              (a, b) => new { MyEmployees = a, viStat = b })   /// Result Collection  

          .Select(a => new AttendanceReport
          {
              EmployeeCode = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.Code,
              FullNameAr = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.FullNameAr,
              WorkStatusType = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.WorkStatusType.NameEn,
              EmployeesShifts = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.Shift.NameEn,
              ShiftTimeIn = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.ShiftTimeIn.ToString(),
              TimeIn = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.TimeIn.ToString(),
              ShiftTimeOut = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.ShiftTimeOut.ToString(),
              TimeOut = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.TimeOut.ToString(),
              WorkHourse = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.WorkHourse,
              EmployeesAttendances = a.MyEmployees.MyEmployees.MyEmployees.MyAttending.LateTime.Value,
              EmployeesLocations = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.LocationId,
              EmployeesViolations = a.viStat.EmployeesViolation.Penalty.NameAr,
              FixedAttendancesLogs = a.MyEmployees.MyEmployees.VacationsBalances.BalanceDue,
              VacationsBalances = a.MyEmployees.MyEmployees.VacationsBalances.CurruntBalance,
              CompanyBranche = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.CompanyBrancheLocation.CompanyBrancheId,
              Section = a.MyEmployees.MyEmployees.MyEmployees.MyEmployees.CompanyBrancheLocation.CompanyBrancheId.ToString(),
          })
          .Take(5)
           .ToList();

My code returns multiple rows for each employee and I need one row with all the data grouped. Thank you everyone

0 Answers
Related