public async Task <IActionResult> BreakEndTime(int id)
        {
            if (id == 0)
            {
                return(RedirectToAction(nameof(Portal), new { isFail = true }));
            }
            else
            {
                bool check = await _timeTrackRepo.CheckOut2(id);

                if (check == true)
                {
                    TimeTrackerModel timeTrackerModel = new TimeTrackerModel();
                    var track = await _context.TimeTracker.FindAsync(id);

                    TimeSpan differ = (TimeSpan)(DateTime.Now - track.BreakStart);
                    timeTrackerModel.BreakingHours = differ.TotalHours;
                    timeTrackerModel.TrackId       = id;

                    bool success = await _timeTrackRepo.EndBreak(timeTrackerModel);

                    if (success == true)
                    {
                        return(RedirectToAction(nameof(Portal)));
                    }
                }
                else
                {
                    return(RedirectToAction(nameof(Portal)));
                }
            }
            return(View());
        }
예제 #2
0
        protected override async Task <bool> DeleteItem()
        {
            MessageBoxResult messageBoxResult = MessageBox.Show("¿Estas seguro de borrar la tarea?", "Confirmación de borrado", MessageBoxButton.YesNo);

            if (messageBoxResult == MessageBoxResult.Yes)
            {
                using (var db = new TimeTrackerModel())
                {
                    try
                    {
                        db.Tasks.Attach(SelectedItem);
                        db.Entry(SelectedItem).State = EntityState.Deleted;

                        var rows = await db.SaveChangesAsync();

                        if (rows > 0)
                        {
                            Status = SelectedItem.IdParent != null ? "Subtarea borrada correctamente" : "Tarea borrada correctamente";
                            _items.Remove(SelectedItem);
                        }
                        return(rows > 0);
                    } catch (Exception ex)
                    {
                        this.Status = "Error al borrar Tarea";
                    }
                }
            }
            return(false);
        }
        public async Task <IActionResult> InTime(TimeTrackerModel timeTrackerModel)
        {
            string user        = User.FindFirst("Index").Value;
            var    Currentuser = await _taskRepository.GetCurrentUser(user);

            ViewBag.photo          = Currentuser.PhotoURL;
            timeTrackerModel.EmpId = Currentuser.EmpId;
            bool existOne = _timeTrackRepo.CheckIn(timeTrackerModel.EmpId);

            if (existOne)
            {
                return(RedirectToAction(nameof(Portal)));
            }
            else
            {
                JSONToViewModel model     = new JSONToViewModel();
                GeoHelper       geoHelper = new GeoHelper();
                var             result    = await geoHelper.GetGeoInfo();

                model = JsonConvert.DeserializeObject <JSONToViewModel>(result);
                timeTrackerModel.Inlocation  = model.City;
                timeTrackerModel.Inlatitude  = model.Latitude;
                timeTrackerModel.InLongitude = model.Longitude;
                int id = await _timeTrackRepo.InTimeMark(timeTrackerModel);

                if (id > 0)
                {
                    return(RedirectToAction(nameof(Portal)));
                }
            }
            return(View());
        }
        public async Task <int> InTimeMark(TimeTrackerModel timeTrackerModel)
        {
            var timeTracker = new TimeTracker()
            {
                Date          = DateTime.Now.Date,
                InTime        = DateTime.Now,
                TotalHours    = 0,
                WorkingHours  = 0,
                BreakingHours = 0,
                EmpId         = timeTrackerModel.EmpId,
                Status        = "Work",
                Inlocation    = timeTrackerModel.Inlocation,
                Inlatitude    = timeTrackerModel.Inlatitude,
                InLongitude   = timeTrackerModel.InLongitude
            };

            await _context.TimeTracker.AddAsync(timeTracker);

            await _context.SaveChangesAsync();

            var info = _context.MarkAttendence.SingleOrDefault(x => (x.EmpId == timeTrackerModel.EmpId) && (x.Date == DateTime.Now.Date));

            if (info == null)
            {
                var markAttendence = new MarkAttendence()
                {
                    Date       = DateTime.Now.Date,
                    InTime     = DateTime.Now,
                    OutTime    = null,
                    TotalHours = 0,
                    EmpId      = timeTrackerModel.EmpId,
                    Type       = "Auto",
                    Status     = "Absent",
                    EmailSent  = false
                };

                await _context.MarkAttendence.AddAsync(markAttendence);

                await _context.SaveChangesAsync();
            }
            else
            {
                info.InTime    = DateTime.Now;
                info.Type      = "Auto";
                info.Status    = "Absent";
                info.EmailSent = false;

                _context.Entry(info).State = EntityState.Modified;
                await _context.SaveChangesAsync();
            }

            return(timeTracker.TrackId);
        }
        public async Task <bool> EndBreak(TimeTrackerModel timeTrackerModel)
        {
            var track = await _context.TimeTracker.FindAsync(timeTrackerModel.TrackId);

            track.BreakEnd      = DateTime.Now;
            track.BreakingHours = timeTrackerModel.BreakingHours + track.BreakingHours;
            track.Status        = "Work";

            _context.Entry(track).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(true);
        }
        //INIT
        public override async Task <bool> Init()
        {
            await base.Init();

            //Init Data
            using (TimeTrackerModel db = new TimeTrackerModel())
            {
                Status = "Cargando proyectos...";
                var proyects = await db.Projects.ToListAsync();

                proyects.ForEach(p => _items.Add(p));

                Status = "ProjectManager iniciado correctamente!";
                return(true);
            }
        }
        public async Task <IActionResult> OutTime(int id)
        {
            if (id == 0)
            {
                return(RedirectToAction(nameof(Portal), new { isFail = true }));
            }
            else
            {
                TimeTrackerModel timeTrackerModel = new TimeTrackerModel();
                var track = await _context.TimeTracker.FindAsync(id);

                if (track.Status != "Break")
                {
                    TimeSpan differ = (TimeSpan)(DateTime.Now - track.InTime);
                    timeTrackerModel.TotalHours   = differ.TotalHours;
                    timeTrackerModel.TrackId      = id;
                    timeTrackerModel.WorkingHours = differ.TotalHours - track.BreakingHours;

                    JSONToViewModel model     = new JSONToViewModel();
                    GeoHelper       geoHelper = new GeoHelper();
                    var             result    = await geoHelper.GetGeoInfo();

                    model = JsonConvert.DeserializeObject <JSONToViewModel>(result);
                    timeTrackerModel.Outlocation  = model.City;
                    timeTrackerModel.Outlatitude  = model.Latitude;
                    timeTrackerModel.OutLongitude = model.Longitude;

                    bool success = await _timeTrackRepo.UpdateTrack(timeTrackerModel);

                    if (success == true)
                    {
                        return(RedirectToAction(nameof(Portal)));
                    }
                }
                else
                {
                    return(RedirectToAction(nameof(Portal), new { isEnd = true }));
                }
            }
            return(View());
        }
        //DELETE
        protected override async Task <bool> DeleteItem()
        {
            MessageBoxResult messageBoxResult = MessageBox.Show("¿Estas seguro de borrar el proyecto?", "confirmación de borrado", MessageBoxButton.YesNo);

            if (messageBoxResult == MessageBoxResult.Yes)
            {
                using (var db = new TimeTrackerModel())
                {
                    db.Projects.Attach(SelectedItem);
                    db.Entry(SelectedItem).State = EntityState.Deleted;
                    var rows = await db.SaveChangesAsync();

                    if (rows > 0)
                    {
                        _items.Remove(SelectedItem);
                        Status = "Proyecto borrado correctamente";
                    }
                    return(rows > 0);
                }
            }
            return(false);
        }
예제 #9
0
        public async Task <bool> Save()
        {
            using (var db = new TimeTrackerModel())
            {
                if (Project.Id == 0)
                {
                    db.Projects.Add(Project);
                }
                else
                {
                    db.Projects.Attach(Project);
                    db.Entry(Project).State = EntityState.Modified;
                }

                var rows = await db.SaveChangesAsync();

                Saved = rows == 1;

                window?.Close();

                return(Saved);
            }
        }
예제 #10
0
 private async Task <bool> LoadTasks(Q parent)
 {
     this._parent = parent;
     _items.Clear();
     using (var db = new TimeTrackerModel())
     {
         if (parent is Project)
         {
             var project   = parent as Project;
             var mainTasks = await(from t in db.Tasks
                                   where t.IdProject == project.Id && t.IdParent == null select t).ToListAsync();
             mainTasks.ForEach(t => _items.Add(t));
         }
         else if (parent is Models.Task)
         {
             var task     = parent as Models.Task;
             var subTasks = await(from t in db.Tasks
                                  where t.IdParent == task.Id
                                  select t).ToListAsync();
             subTasks.ForEach(t => _items.Add(t));
         }
     }
     return(true);
 }
        public async Task <bool> UpdateTrack(TimeTrackerModel timeTrackerModel)
        {
            var Hours = await _context.StandardWorkHours.FindAsync(1);

            var track = await _context.TimeTracker.FindAsync(timeTrackerModel.TrackId);

            track.OutTime      = DateTime.Now;
            track.TotalHours   = timeTrackerModel.TotalHours;
            track.WorkingHours = timeTrackerModel.WorkingHours;
            track.Status       = "Finish";
            track.Type         = "Auto";
            track.Outlocation  = timeTrackerModel.Outlocation;
            track.Outlatitude  = timeTrackerModel.Outlatitude;
            track.OutLongitude = timeTrackerModel.OutLongitude;

            _context.Entry(track).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            if (timeTrackerModel.TotalHours >= Hours.NoOfHours)
            {
                var info = _context.MarkAttendence.SingleOrDefault(x => (x.EmpId == track.EmpId) && (x.Date == DateTime.Now.Date));
                if (info == null)
                {
                    var markAttendence = new MarkAttendence()
                    {
                        Date       = DateTime.Now.Date,
                        InTime     = track.InTime,
                        OutTime    = DateTime.Now,
                        TotalHours = timeTrackerModel.TotalHours,
                        EmpId      = track.EmpId,
                        Type       = "Auto",
                        Status     = "Present",
                        EmailSent  = true,
                    };

                    await _context.MarkAttendence.AddAsync(markAttendence);

                    await _context.SaveChangesAsync();
                }
                else
                {
                    info.OutTime    = DateTime.Now;
                    info.TotalHours = timeTrackerModel.TotalHours;
                    info.Type       = "Auto";
                    info.Status     = "Present";
                    info.EmailSent  = true;


                    _context.Entry(info).State = EntityState.Modified;
                    await _context.SaveChangesAsync();
                }
            }
            else
            {
                var info = _context.MarkAttendence.SingleOrDefault(x => (x.EmpId == track.EmpId) && (x.Date == DateTime.Now.Date));
                if (info == null)
                {
                    var markAttendence = new MarkAttendence()
                    {
                        Date       = DateTime.Now.Date,
                        InTime     = track.InTime,
                        OutTime    = DateTime.Now,
                        TotalHours = timeTrackerModel.TotalHours,
                        EmpId      = track.EmpId,
                        Type       = "Auto",
                        Status     = "Not Complete",
                        EmailSent  = false
                    };

                    await _context.MarkAttendence.AddAsync(markAttendence);

                    await _context.SaveChangesAsync();
                }
                else
                {
                    info.OutTime    = DateTime.Now;
                    info.Type       = "Auto";
                    info.Status     = "Not Complete";
                    info.TotalHours = timeTrackerModel.TotalHours;
                    info.EmailSent  = false;

                    _context.Entry(info).State = EntityState.Modified;
                    await _context.SaveChangesAsync();
                }
            }
            return(true);
        }