private static Camera GetCamera(CameraDto cameraDto)
        {
            // Determine the camera type with reflection:

            Type cameraType = Assembly
                              .GetAssembly(typeof(Camera))
                              .GetTypes()
                              .FirstOrDefault(type => type.Name.ToLower() == (cameraDto.Type + "Camera").ToLower());

            // All the needed code to create 'CameraDslr' or 'CameraMirrorless' if we use AutoMapper:

            // Object cameraObject = Mapper.Map(cameraDto, cameraDto.GetType(), cameraType);

            //  return cameraObject as Camera;

            Camera cameraEntity = new Camera();

            if (cameraType?.Name.ToLower() == "dslrcamera")
            {
                cameraEntity = new DSLRCamera()
                {
                    Make            = cameraDto.Make,
                    Model           = cameraDto.Model,
                    IsFullFrame     = cameraDto.IsFullFrame,
                    MinISO          = cameraDto.MinISO,
                    MaxISO          = cameraDto.MaxISO,
                    MaxShutterSpeed = cameraDto.MaxShutterSpeed
                };
            }
            else if (cameraType?.Name.ToLower() == "mirrorlesscamera")
            {
                cameraEntity = new MirrorlessCamera()
                {
                    Make               = cameraDto.Make,
                    Model              = cameraDto.Model,
                    IsFullFrame        = cameraDto.IsFullFrame,
                    MinISO             = cameraDto.MinISO,
                    MaxISO             = cameraDto.MaxISO,
                    MaxVideoResolution = cameraDto.MaxVideoResolution,
                    MaxFrameRate       = cameraDto.MaxFrameRate
                };
            }

            return(cameraEntity);
        }
        private static void ImportCameras(PhotographyContext context)
        {
            var json          = File.ReadAllText(CamerasParh);
            var camerasEntity = JsonConvert.DeserializeObject <IEnumerable <CameraDto> >(json);

            foreach (var camera in camerasEntity)
            {
                if (camera.Make == null || camera.Model == null || camera.Type == null || camera.MinIso < 100)

                {
                    Console.WriteLine("Error. Invalid data provided");
                    continue;
                }

                if (camera.Type == "DSLR")
                {
                    var newdslrCamera = new DslrCamera
                    {
                        Make            = camera.Make,
                        Model           = camera.Model,
                        MinIso          = camera.MinIso,
                        MaxIso          = camera.MaxIso,
                        IsFullFrame     = camera.IsFullFrame,
                        MaxShutterSpeed = camera.MaxShutterSpeed,
                    };

                    try
                    {
                        context.Cameras.Add(newdslrCamera);
                        context.SaveChanges();
                    }
                    catch (DbEntityValidationException db)
                    {
                        context.Cameras.Remove(newdslrCamera);
                        context.SaveChanges();
                    }

                    Console.WriteLine($"Successfully imported {camera.Type} {camera.Make} {camera.Model}");
                }
                else
                {
                    var mirrorlesCamera = new MirrorlessCamera()
                    {
                        Make               = camera.Make,
                        Model              = camera.Model,
                        MinIso             = camera.MinIso,
                        MaxIso             = camera.MaxIso,
                        IsFullFrame        = camera.IsFullFrame,
                        MaxVideoResolution = camera.MaxVideoResolution,
                        MaxFrameRate       = camera.MaxFrameRate
                    };

                    try
                    {
                        context.Cameras.Add(mirrorlesCamera);
                        context.SaveChanges();
                    }
                    catch (DbEntityValidationException db)
                    {
                        context.Cameras.Remove(mirrorlesCamera);
                        Console.WriteLine($"Successfully imported {camera.Type} {camera.Make} {camera.Model}");
                    }
                }
                context.SaveChanges();
            }
        }
Exemple #3
0
        private static void ImportCameras(UnitOfWork unit)
        {
            var json        = File.ReadAllText(String.Format(datasetsPath, "cameras"));
            var camerasDtos = JsonConvert.DeserializeObject <IEnumerable <CameraDTO> >(json);

            foreach (var cameraDto in camerasDtos)
            {
                if (cameraDto.Type == null || cameraDto.Make == null || cameraDto.Model == null ||
                    cameraDto.MinISO == null)
                {
                    Console.WriteLine("Error. Invalid data provided");
                    continue;
                }

                if (cameraDto.Type == "DSLR")
                {
                    Camera camera = new DSLRCamera
                    {
                        IsFullFrame     = cameraDto.IsFullFrame,
                        Make            = cameraDto.Make,
                        MaxISO          = cameraDto.MaxISO,
                        MaxShutterSpeed = cameraDto.MaxShutterSpeed,
                        MinISO          = cameraDto.MinISO,
                        Model           = cameraDto.Model
                    };

                    unit.Cameras.Add(camera);
                    try
                    {
                        unit.Commit();
                        Console.WriteLine($"Successfully imported {cameraDto.Type} {cameraDto.Make} {cameraDto.Model}");
                    }
                    catch (DbEntityValidationException dbex)
                    {
                        unit.Cameras.Delete(camera);
                        Console.WriteLine("Error. Invalid data provided");
                    }
                }
                else if (cameraDto.Type == "Mirrorless")
                {
                    Camera camera = new MirrorlessCamera
                    {
                        IsFullFrame        = cameraDto.IsFullFrame,
                        Make               = cameraDto.Make,
                        MaxFrameRate       = cameraDto.MaxFrameRate,
                        MaxVideoResolution = cameraDto.MaxVideoResolution,
                        MaxISO             = cameraDto.MaxISO,
                        MinISO             = cameraDto.MinISO,
                        Model              = cameraDto.Model
                    };

                    unit.Cameras.Add(camera);
                    try
                    {
                        unit.Commit();
                        Console.WriteLine($"Successfully imported {cameraDto.Type} {cameraDto.Make} {cameraDto.Model}");
                    }
                    catch (Exception)
                    {
                        unit.Cameras.Delete(camera);
                        Console.WriteLine("Error. Invalid data provided");
                    }
                }
            }
        }