Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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());
        }