public TimeSheetActivity Start(int timeSheetTaskId, string ipAddress) { // get the record var dbRecord = db.TimeSheetTasks .Include(k => k.TimeSheet) .FirstOrDefault(k => k.ID == timeSheetTaskId); if (dbRecord == null) { throw new Exception("record not found"); } // check if there are any active activities on that timesheet //var hasActiveActivity = db.TimeSheetActivities.Any(k => //db.TimeSheetTasks.Any(t => t.ID == k.TimeSheetTaskId && t.TimeSheetId == dbRecord.TimeSheetId && !k.ToDate.HasValue)); bool hasActiveActivity = UserHasActiveActivity(dbRecord.TimeSheet.UserId); if (hasActiveActivity) { throw new ClientException($"there is already an active activity"); } if (ipAddress == "::1") { ipAddress = "127.0.0.1"; } bool ipAdded = _ipAddressMethods.AddIfNotExist(ipAddress); DataSets.TimeSheetActivity activity = new DataSets.TimeSheetActivity() { //Address = ipAddress, FromDate = DateTime.Now, TimeSheetTaskId = timeSheetTaskId, DateAdded = DateTime.Now }; if (ipAdded) { activity.Address = ipAddress; } // add the activity var record_pending = db.TimeSheetActivities.Add(activity); // save changes if (db.SaveChanges() > 0) { // return activity return(Get(record_pending.Entity.ID)); } return(null); }
public UserLog AddStartLog(string userId, string ipAddress, UserLogStatus status) { try { var dbActiveLog = db.UserLogging.FirstOrDefault(k => k.UserId == userId && !k.ToDate.HasValue); if (dbActiveLog != null) { UserLog activeLog = _mapper.Map <UserLog>(dbActiveLog); activeLog.UserName = GetUserName(userId); return(activeLog); } if (ipAddress == "::1") { ipAddress = "127.0.0.1"; } bool ipAdded = _ipAddressesMethods.AddIfNotExist(ipAddress); DataSets.UserLog dbLog = new DataSets.UserLog() { LogStatusCode = (short)status, Address = ipAdded ? ipAddress : null, FromDate = DateTime.Now, UserId = userId }; db.UserLogging.Add(dbLog); db.SaveChanges(); UserLog log = _mapper.Map <UserLog>(dbLog); log.UserName = GetUserName(userId); return(log); } catch (Exception) { return(null); } }