public IHttpActionResult BeginWorkLogSession(int id, [FromBody] ProjectWorkLogRequestModel model)
{
if (!this.ModelState.IsValid)
{
return this.BadRequest(this.ModelState);
}
var result = this.data.Projects
.Find(x => x.Id == id).FirstOrDefault();
if (result == null)
{
return this.BadRequest("No project with that id is present.");
}
var currentUserId = User.Identity.GetUserId();
var user = this.data.Employees.Find(x => x.Id == currentUserId).FirstOrDefault();
if (user == null)
{
return this.BadRequest("Only employees can work on projects!");
}
var workLog = Mapper.Map<WorkLog>(model);
workLog.StartTime = DateTime.Now;
result.WorkLogs.Add(workLog);
data.Projects.Update(result);
data.SaveChanges();
var message = string.Format("Project session activity: User {0} started a work session at {1} on {2}'s project | {3}", user.Email, workLog.StartTime, result.Client.Email, "/projects");
pubnubClient.Broadcast(Constants.PubnubChannelActivityFeed, message, str => { }, s => { });
return this.Ok(workLog.Id);
}