Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mytime
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Narendar Vakiti
mytime
Commits
8791df78
Commit
8791df78
authored
Feb 28, 2020
by
Mallikarjun Yerrabothu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
scheduler related changes
parent
73a120f3
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
315 additions
and
0 deletions
+315
-0
SchedulersLogsDetails.java
...ava/com/nisum/myteam/model/dao/SchedulersLogsDetails.java
+28
-0
LoginDetailsVO.java
src/main/java/com/nisum/myteam/model/vo/LoginDetailsVO.java
+22
-0
SchedulersLogsDetailsRepo.java
...om/nisum/myteam/repository/SchedulersLogsDetailsRepo.java
+11
-0
EmployeeAVGHoursScheduler.java
...com/nisum/myteam/schedular/EmployeeAVGHoursScheduler.java
+134
-0
ISchedulersLogsDetailsService.java
...m/nisum/myteam/service/ISchedulersLogsDetailsService.java
+11
-0
SchedulersLogsDetailsService.java
...sum/myteam/service/impl/SchedulersLogsDetailsService.java
+44
-0
employeesExemptHours.html
src/main/resources/email/employeesExemptHours.html
+65
-0
No files found.
src/main/java/com/nisum/myteam/model/dao/SchedulersLogsDetails.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
model
.
dao
;
import
lombok.*
;
import
org.bson.types.ObjectId
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
javax.persistence.Temporal
;
import
javax.persistence.TemporalType
;
import
java.io.Serializable
;
import
java.util.Date
;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document
(
collection
=
"schedulersLogDetails"
)
public
class
SchedulersLogsDetails
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6160218148752874740L
;
@Id
private
String
id
;
private
String
schedulerName
;
private
String
schedulerStatus
;
private
Date
createdDate
;
private
String
date
;
}
src/main/java/com/nisum/myteam/model/vo/LoginDetailsVO.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
model
.
vo
;
import
com.nisum.myteam.model.EmployeeLoginData
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
lombok.*
;
import
java.util.List
;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public
class
LoginDetailsVO
{
private
String
employeeId
;
private
String
employeeName
;
private
String
emailId
;
private
List
<
EffectiveLoginData
>
effectiveLoginData
;
private
List
<
EmployeeLoginData
>
employeeLoginDataList
;
private
String
avgHours
;
private
String
orphanLogin
;
}
src/main/java/com/nisum/myteam/repository/SchedulersLogsDetailsRepo.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
repository
;
import
com.nisum.myteam.model.dao.SchedulersLogsDetails
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
java.util.Date
;
public
interface
SchedulersLogsDetailsRepo
extends
MongoRepository
<
SchedulersLogsDetails
,
String
>
{
//SchedulersLogsDetails findBySchedulerNameAndCreatedDate(Date fromDate, Date toDate, String schedulerName);
SchedulersLogsDetails
findBySchedulerNameAndCreatedDate
(
String
schedulerName
,
Date
createdDate
);
}
src/main/java/com/nisum/myteam/schedular/EmployeeAVGHoursScheduler.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
schedular
;
import
com.nisum.myteam.exception.handler.MyTeamException
;
import
com.nisum.myteam.model.Mail
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
com.nisum.myteam.model.dao.Employee
;
import
com.nisum.myteam.model.dao.SchedulersLogsDetails
;
import
com.nisum.myteam.model.vo.LoginDetailsVO
;
import
com.nisum.myteam.service.IEffectiveLoginTimeService
;
import
com.nisum.myteam.service.IEmployeeService
;
import
com.nisum.myteam.service.IMailService
;
import
com.nisum.myteam.service.ISchedulersLogsDetailsService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.env.Environment
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.mail.MessagingException
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.DayOfWeek
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.time.temporal.TemporalAdjusters
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Component
public
class
EmployeeAVGHoursScheduler
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
EmployeeAVGHoursScheduler
.
class
);
@Autowired
private
IEmployeeService
employeeService
;
@Autowired
private
IEffectiveLoginTimeService
effectiveLoginTimeService
;
@Autowired
private
ISchedulersLogsDetailsService
schedulersLogsDetailsService
;
@Autowired
private
IMailService
mailService
;
@Autowired
private
Environment
environment
;
@Value
(
"${myTeam.exemptHours.fromemail}"
)
private
String
fromMail
;
@Value
(
"${myTeam.exemptHours.toemail}"
)
private
String
toEmail
;
@Scheduled
(
cron
=
"${email.exemptHours.notification.cron}"
)
private
void
sendEmployessAvgHoursMailToLeads
()
throws
IOException
,
MessagingException
{
logger
.
info
(
"sendEmployessAvgHoursMailToLeadsnotification::"
);
SchedulersLogsDetails
schedulersLogsDetails
=
schedulersLogsDetailsService
.
getCurrentSchedulerLogDetails
(
"EmployeeAVGHoursScheduler"
,
new
Date
());
if
(
schedulersLogsDetails
==
null
||
!
"Active"
.
equalsIgnoreCase
(
schedulersLogsDetails
.
getSchedulerStatus
()))
{
sendhoursExemptEmpListToLeads
();
}
}
private
void
sendhoursExemptEmpListToLeads
()
throws
MessagingException
{
SchedulersLogsDetails
schedulersLogsDetails
;
Mail
mail
=
new
Mail
();
LocalDate
dt
=
LocalDate
.
now
();
try
{
Date
friday
=
Date
.
from
(
dt
.
with
(
TemporalAdjusters
.
previous
(
DayOfWeek
.
FRIDAY
)).
atStartOfDay
().
atZone
(
ZoneId
.
systemDefault
()).
toInstant
());
Date
monday
=
Date
.
from
(
dt
.
with
(
TemporalAdjusters
.
previous
(
DayOfWeek
.
MONDAY
)).
atStartOfDay
().
atZone
(
ZoneId
.
systemDefault
()).
toInstant
());
List
<
Employee
>
activeEmpList
=
employeeService
.
getActiveEmployees
();
List
<
LoginDetailsVO
>
hoursExemptEmployeeList
=
new
ArrayList
<>();
activeEmpList
.
removeIf
(
e
->
"At Client Location"
.
equalsIgnoreCase
(
e
.
getEmpSubStatus
()
instanceof
String
?
(
String
)
e
.
getEmpSubStatus
()
:
null
));
activeEmpList
.
removeIf
(
e
->
{
try
{
Map
<
String
,
Object
>
obj
=
effectiveLoginTimeService
.
getEmployeesEffLoginData
(
new
Long
(
e
.
getEmployeeId
()),
monday
,
friday
);
if
(
obj
!=
null
&&
(
String
)
obj
.
get
(
"averageTime"
)
!=
null
)
{
String
hoursMins
[]
=
((
String
)
obj
.
get
(
"averageTime"
)).
split
(
":"
);
if
(
hoursMins
!=
null
)
{
boolean
isHoursExemptEmployee
=
new
Long
(
hoursMins
[
0
])
<
8
;
if
(
isHoursExemptEmployee
)
{
//System.out.println(" Hours avg " + obj.get("data"));
LoginDetailsVO
loginDetailsVO
=
new
LoginDetailsVO
();
loginDetailsVO
.
setEmployeeId
(
e
.
getEmployeeId
());
loginDetailsVO
.
setEmployeeName
(
e
.
getEmployeeName
());
loginDetailsVO
.
setAvgHours
((
String
)
obj
.
get
(
"averageTime"
));
loginDetailsVO
.
setEffectiveLoginData
((
List
<
EffectiveLoginData
>)
obj
.
get
(
"data"
));
List
<
EffectiveLoginData
>
effectiveLoginDataList
=
(
List
<
EffectiveLoginData
>)
obj
.
get
(
"data"
);
StringBuilder
orphanLoginSB
=
new
StringBuilder
();
effectiveLoginDataList
.
stream
().
forEach
(
eloginData
->
{
if
(
eloginData
.
getOrphanLogin
()
!=
null
&&
!
eloginData
.
getOrphanLogin
().
isEmpty
())
orphanLoginSB
.
append
(
" "
+
parseDate
(
eloginData
.
getDate
(),
"dd-MMM-yyyy"
)
+
" - "
+
eloginData
.
getOrphanLogin
().
stream
().
collect
(
Collectors
.
joining
(
","
,
"["
,
"]"
)));
});
loginDetailsVO
.
setOrphanLogin
(
orphanLoginSB
.
toString
());
hoursExemptEmployeeList
.
add
(
loginDetailsVO
);
}
return
isHoursExemptEmployee
;
}
}
}
catch
(
ParseException
ex
)
{
ex
.
printStackTrace
();
}
return
false
;
});
mail
.
setFrom
(
fromMail
);
mail
.
setTo
(
toEmail
);
mail
.
setSubject
(
" hoursExemptEmployeeList "
);
mail
.
setCc
(
new
String
[]{
fromMail
});
mailService
.
sendExemptHoursEmployeDetailsToLeads
(
mail
,
hoursExemptEmployeeList
);
schedulersLogsDetails
=
new
SchedulersLogsDetails
();
schedulersLogsDetails
.
setCreatedDate
(
new
Date
());
schedulersLogsDetails
.
setSchedulerName
(
"EmployeeAVGHoursScheduler"
);
schedulersLogsDetails
.
setSchedulerStatus
(
"Active"
);
schedulersLogsDetails
.
setDate
(
parseDate
(
new
Date
(),
"yyyy-MM-dd"
));
schedulersLogsDetailsService
.
saveSchedulersLog
(
schedulersLogsDetails
);
}
catch
(
MyTeamException
e
)
{
logger
.
error
(
"Error "
+
e
.
getMessage
());
}
catch
(
IOException
ie
)
{
logger
.
error
(
"ie Error "
+
ie
.
getMessage
());
}
}
public
static
String
parseDate
(
Date
date
,
String
format
)
{
return
new
SimpleDateFormat
(
format
).
format
(
date
);
}
}
src/main/java/com/nisum/myteam/service/ISchedulersLogsDetailsService.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
service
;
import
com.nisum.myteam.model.dao.SchedulersLogsDetails
;
import
java.util.Date
;
public
interface
ISchedulersLogsDetailsService
{
public
SchedulersLogsDetails
getCurrentSchedulerLogDetails
(
String
schedulerName
,
Date
createdDate
);
public
void
saveSchedulersLog
(
SchedulersLogsDetails
schedulersLogsDetails
);
}
src/main/java/com/nisum/myteam/service/impl/SchedulersLogsDetailsService.java
0 → 100644
View file @
8791df78
package
com
.
nisum
.
myteam
.
service
.
impl
;
import
com.nisum.myteam.model.dao.SchedulersLogsDetails
;
import
com.nisum.myteam.repository.SchedulersLogsDetailsRepo
;
import
com.nisum.myteam.service.ISchedulersLogsDetailsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
@Service
public
class
SchedulersLogsDetailsService
implements
ISchedulersLogsDetailsService
{
@Autowired
private
SchedulersLogsDetailsRepo
schedulersLogsDetailsRepo
;
@Autowired
private
MongoTemplate
mongoTemplate
;
@Override
public
SchedulersLogsDetails
getCurrentSchedulerLogDetails
(
String
schedulerName
,
Date
createdDate
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"schedulerName"
).
in
(
schedulerName
).
and
(
"Date"
).
in
(
parseDate
(
new
Date
(),
"yyyy-MM-dd"
)));
SchedulersLogsDetails
schedulersLogsDetails
=
mongoTemplate
.
findOne
(
query
,
SchedulersLogsDetails
.
class
);
// SchedulersLogsDetails schedulersLogsDetails = schedulersLogsDetailsRepo.findBySchedulerNameAndCreatedDate(schedulerName, getCurrentDate());
return
schedulersLogsDetails
;
}
@Override
public
void
saveSchedulersLog
(
SchedulersLogsDetails
schedulersLogsDetails
)
{
schedulersLogsDetailsRepo
.
save
(
schedulersLogsDetails
);
}
public
static
String
parseDate
(
Date
date
,
String
format
)
{
return
new
SimpleDateFormat
(
format
).
format
(
date
);
}
}
src/main/resources/email/employeesExemptHours.html
0 → 100644
View file @
8791df78
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns:th=
"http://www.thymeleaf.org"
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<title>
Employee Details Average hours less than at Workplace
</title>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<style>
table
#alter
th
,
td
{
border
:
1px
solid
black
;
border-collapse
:
collapse
;
}
th
,
td
{
padding
:
10px
;
}
table
#alter
tr
:nth-child
(
even
)
{
background-color
:
#eee
;
}
table
#alter
tr
:nth-child
(
odd
)
{
background-color
:
#fff
;
}
table
#alter
th
{
color
:
white
;
background-color
:
gray
;
}
</style>
</head>
<body
style=
"margin: 0; padding: 0;"
>
<table
width=
"500px"
cellpadding=
"10"
cellspacing=
"0"
style=
"border: 1px dotted #ccc; border-top: none; background: #f8f8f8; font-family: sans-serif; font-size: 14px; margin: 0 auto;"
>
<tr
style=
"background: #00b4e6; color:#fff; font-size: 40px;"
>
<td>
nisum
</td>
</tr>
<tr>
<td
align=
"center"
style=
"border-bottom: 1px dotted #ccc; font-size: 20px;"
>
Employee Details Less than 8 hours IN Work area
</td>
</tr>
<tr>
<td
style=
"padding: 10px 10px 0 20px; width: 100px; "
>
Hi,
<p>
Please find below employees are less than 8 hours in Work area
</p>
</td>
</tr>
<tr>
<td
><table
align =
"center"
id=
"alter"
>
<tr><th
style =
"padding: 10px;"
>
Employee ID
</th><th
style =
"padding: 10px;"
>
Employee Name
</th><th
style =
"padding: 10px;"
>
Avg. Hours
</th><th
style =
"padding: 10px;"
>
Orphan Login Hours
</th></tr>
employeeList
</table>
</td>
</tr>
<tr>
<td
>
Regards,
<br
/>
Nisum Consulting
</td>
</tr>
</table>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment