public async Task <LocationEntity> Post(string deviceId, string name, bool createMinTemp = false) { var location = new LocationEntity() { Name = name, DeviceId = deviceId, Active = true, CreatedAt = Now }; Db.Locations.Add(location); var user = await Db.Users.Where(x => x.DeviceId == deviceId).SingleOrDefaultAsync(); var activeProfile = await Db.Profiles.Where(x => x.UserId == user.Id && x.Active).SingleOrDefaultAsync(); await Db.SaveChangesAsync(); if (createMinTemp) { await minTemperatureRepository.Post(location.Id, MinTemperatureRepository.DEFAULT_MIN_TEMP, activeProfile.Id); } return(location); }
public async Task <List <ProfileDto> > GetDtos(string deviceId, int locationId = -1) { if (locationId == -1) { locationId = await Db.Locations.Where(x => x.DeviceId == deviceId && x.Active).Select(x => x.Id).SingleOrDefaultAsync(); } var profiles = await Db.Profiles.Where(x => x.User.DeviceId == deviceId).ToListAsync(); var profileDtos = new List <ProfileDto>(); foreach (var profile in profiles) { var profileDto = new ProfileDto(); bool?state = null; MinTemperatureEntity minTemp = null; if (profile.TypeId == ProfileType.MODE_AUTO_PROFILE_ID) { minTemp = await minTemperatureRepository.Get(locationId, profile.Id); if (minTemp == null) { minTemp = await minTemperatureRepository.Post(locationId, DEFAULT_TEMP, profile.Id); if (minTemp == null) { throw new RepositoryException($"{profile.Id} 'idli profil ve {locationId} id'li location için MinTemp bilgisi yok ve yenisi oluşturulamıyor."); } } } else if (profile.TypeId == ProfileType.MODE_AUTO_SERVER_PROFILE_ID) { minTemp = await minTemperatureRepository.Get(profile.Id); if (minTemp == null) { throw new RepositoryException($"{profile.Id} 'idli profil ve {locationId} id'li location için MinTemp bilgisi yok ve yenisi oluşturulamıyor."); } var location = await Db.Locations.Where(x => x.Id == minTemp.LocationId && x.Active).SingleOrDefaultAsync(); profileDto.SelectedThermometer = new LocationDto() { Id = location.Id, Name = location.Name, DeviceId = location.DeviceId, DeviceTypeName = DeviceType.GetName(location.Device.TypeId), MinTempValue = minTemp.Value }; } if (profile.TypeId == ProfileType.MODE_MANUAL_ID) { state = await stateRepository.Get(deviceId); } profileDto.Id = profile.Id; profileDto.MinTempValue = minTemp?.Value; profileDto.ProfileName = profile.Name; profileDto.TypeName = ProfileType.GetName(profile.TypeId); profileDto.State = state; profileDto.Active = profile.Active; profileDtos.Add(profileDto); } return(profileDtos); }