public async Task <IActionResult> PutMonthreg([FromRoute] int id, [FromBody] Monthreg monthreg) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != monthreg.Rowid) { return(BadRequest()); } _context.Entry(monthreg).State = EntityState.Modified; //_context.SaveChanges(); //JsonConvert.PopulateObject(values,monthreg); try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MonthregExists(id)) { return(NotFound()); } else { throw; } } return(Ok(monthreg)); }
public async Task <IActionResult> PostMonthreg([FromBody] Monthreg monthreg) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.Monthreg.Add(monthreg); await _context.SaveChangesAsync(); return(CreatedAtAction("GetMonthreg", new { id = monthreg.Rowid }, monthreg)); }
public async Task <IActionResult> PostMonthreg(int lastid) { try { var deviceregs = _context.Devicereg.Where(c => c.Id > lastid); List <Monthreg> newmonthregs = new List <Monthreg>(); var workers_ = _context.Workers.Select(d => d.Id); //Select all distinct workers //var workers = deviceregs.Select(d => d.Workerid).Distinct(); foreach (int workerid in workers_) { //Select all distinct worker days var days = deviceregs.Where(d => d.Workerid == workerid).Select(d => d.Time.Value.Date).Distinct(); foreach (DateTime date in days) { char daystatus = ' '; double minutes = 0; //Select all times when worker registered in exact date var times = _context.Devicereg.Where(d => d.Time.Value.Date.Equals(date) && d.Workerid == workerid).OrderBy(d => d.Time).ToList(); for (int i = 0; i < times.Count(); i++) { if (times[i].Inout == 0) { if (i + 1 != times.Count() && times[i + 1].Inout == 1) { minutes += times[i + 1].Time.Value.Subtract(times[i].Time.Value).TotalMinutes; i++; //Skip next registration cause it's already subtracted } else { if (date.Date != DateTime.Today) { daystatus = 'X'; } } } else if (daystatus != 'X') { daystatus = 'E'; } } int yearandmonth = Int32.Parse(date.ToString("yyyyMM")); Monthreg monthreg = _context.Monthreg.Concat(newmonthregs).FirstOrDefault(m => m.Monthid == yearandmonth && m.Worker.Id == workerid); if (monthreg == null) { monthreg = new Monthreg(); monthreg.Monthid = yearandmonth; monthreg.Worker = _context.Workers.First(w => w.Id == workerid); _context.Monthreg.Add(monthreg); newmonthregs.Add(monthreg); } if (minutes > 0) { monthreg.GetType().GetProperty("D" + date.Day).SetValue(monthreg, Math.Round((decimal)(minutes / 60), 1)); monthreg.GetType().GetProperty("Dp" + date.Day).SetValue(monthreg, ""); } else if (daystatus != ' ') { monthreg.GetType().GetProperty("Dp" + date.Day).SetValue(monthreg, daystatus.ToString()); } } } await _context.SaveChangesAsync(); SetWeekendStatus(); } catch (Exception e) { //TODO: error logging return(StatusCode(500)); } return(Ok()); }