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()); }
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); }
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); } }
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); }