//// GET: DeviceModels/Details/5
        //public async Task<ActionResult> Details(int? id)
        //{
        //    if (id == null)
        //    {
        //        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        //    }
        //    DeviceModel deviceModel = await db.DeviceModels.FindAsync(id);
        //    if (deviceModel == null)
        //    {
        //        return HttpNotFound();
        //    }
        //    return View(deviceModel);
        //}

        // GET: DeviceModels/Create
        public async Task<ActionResult> Create(DeviceModelInput input)
        {

            var createDeviceModelData = await _deviceModelAppService.GenerateViewBagDtoAsync();
            return View(new CreateDeviceModelViewModel { DeviceModelViewBagDto = createDeviceModelData, DeviceModelInput = input});

        }
 public async Task<DeviceModel> FindDeviceModelAsync(DeviceModelInput input)
 {
     return await _deviceModelRepository.FirstOrDefaultAsync(
         d => (d.DeviceModelName.ToLower() == input.DeviceModelName.ToLower()) &&
              (d.DeviceCategory.DeviceCategoryName.ToLower() == input.DeviceCategoryName.ToLower()) &&
              (d.Manufacturer.ManufacturerName.ToLower() == input.ManufacturerName.ToLower())
         );
 }
        public async Task CreateDeviceModelAsync(DeviceModelInput input)
        {
            if (await ExistsAsync(input)) return;

            var manufacturer = await _manufacturerDomainService.GetOrCreateAsync(input.ManufacturerName);
            var category = await _deviceCategoryDomainService.GetOrCreateAsync(input.DeviceCategoryName);

            await
                _deviceModelRepository.InsertAsync(new DeviceModel
                {
                    DeviceModelName = input.DeviceModelName,
                    DeviceCategory = category,
                    DeviceCategoryId = category.Id,
                    Manufacturer = manufacturer,
                    ManufacturerId = manufacturer.Id
                });

            Logger.Info("DeviceModels: Created a new device model: " +
                        input.ManufacturerName + " " +
                        input.DeviceModelName + " (" +
                        input.DeviceCategoryName + ")");
        
        }
 public async Task<bool> ExistsAsync(DeviceModelInput input)
 {
     return await FindDeviceModelAsync(input) != null;
 }