BillableHoursWebApp.Api.Controllers.ProjectsController.BeginWorkLogSession C# (CSharp) Method

BeginWorkLogSession() private method

private BeginWorkLogSession ( int id, [ model ) : IHttpActionResult
id int
model [
return IHttpActionResult
        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);
        }