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);
        }
Exemple #2
0
        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);
            }
        }