Пример #1
0
        public async Task <IActionResult> PostT_sensor([FromBody] T_sensor t_sensor)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (User.Claims.Single(x => x.Type == ClaimTypes.Role).Value == "User")
            {
                if (Convert.ToInt32(User.FindFirstValue("Sub")) != _context.Enterprises.Find(_context.Rooms.Find(t_sensor.RoomId).EnterpriseId).UserId)
                {
                    return(BadRequest("Stop hacking pls..."));
                }
            }

            if (GetUserElements.AddNewItem(Convert.ToInt32(User.FindFirstValue("Sub")), "Sensor", _context) == false)
            {
                return(BadRequest("Достигнуто максимально кол-во Sensors для вашего тарифа."));
            }

            _context.T_sensors.Add(t_sensor);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetT_sensor", new { id = t_sensor.Id }, t_sensor));
        }
Пример #2
0
        public async Task <IActionResult> PutT_sensor([FromRoute] int id, [FromBody] T_sensor t_sensor)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != t_sensor.Id)
            {
                return(BadRequest());
            }

            if (User.Claims.Single(x => x.Type == ClaimTypes.Role).Value == "User")
            {
                User user = _context.Users.Find(Convert.ToInt32(User.FindFirstValue("Sub")));

                List <T_sensor> t_Sensors = GetUserElements.GetUserT_sensors(user.Id, _context);

                if (t_Sensors == null || t_Sensors.Count == 0 || t_Sensors.Where(x => x.Id == id).ToList().Count == 0)
                {
                    return(NotFound());
                }
            }

            //Alarm
            T_sensor sensor = _context.T_sensors.Find(t_sensor.Id);

            if (t_sensor.Value < sensor.Min_value)
            {
                _context.Rooms.Find(t_sensor.RoomId).Alarm = true;

                Enterprise enterprise = _context.Enterprises.Find(_context.Rooms.Find(t_sensor.RoomId).EnterpriseId);
                User       user       = _context.Users.Find(enterprise.UserId);

                SendMail.sendEmail(user.Mail, "ALARM");
            }
            else if (t_sensor.Value > sensor.Max_value)
            {
                _context.Rooms.Find(t_sensor.RoomId).Alarm = true;

                Enterprise enterprise = _context.Enterprises.Find(_context.Rooms.Find(t_sensor.RoomId).EnterpriseId);
                User       user       = _context.Users.Find(enterprise.UserId);

                SendMail.sendEmail(user.Mail, "ALARM");
            }

            _context.Entry(t_sensor).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!T_sensorExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }