Example #1
0
        public async void CanCreateANewMiniModel()
        {
            var testEmail = "*****@*****.**";

            var miniModel = new MiniModelDTO
            {
                Name         = "Stromwall",
                Manufacturer = "Privateer Press",
                PartNumber   = "PP1234",
                Faction      = "Cygnar",
                PointCost    = 38,
                BuildState   = "unBuilt"
            };

            var service = BuildService();

            var saved = await service.Create(miniModel, testEmail);

            Assert.NotNull(saved);
            Assert.Equal(miniModel.Name, saved.Name);
            Assert.Equal(miniModel.Manufacturer, saved.Manufacturer);
            Assert.Equal(miniModel.PartNumber, saved.PartNumber);
            Assert.Equal(miniModel.Faction, saved.Faction);
            Assert.Equal(miniModel.PointCost, saved.PointCost);
            Assert.Equal(miniModel.BuildState, saved.BuildState);
        }
Example #2
0
        public async void CanUpdateAMiniModel()
        {
            var testEmail = "*****@*****.**";
            var service   = BuildService();

            var miniModel = new MiniModelDTO
            {
                Id           = 1,
                Name         = "IronClad",
                Manufacturer = "Privateer Press",
                PartNumber   = "PP0987",
                Faction      = "Cygnar",
                PointCost    = 40,
                BuildState   = "painted"
            };

            await service.Update(miniModel, 1, testEmail);

            var returnFromMethod = await service.GetMiniModel(1, testEmail);

            Assert.NotNull(returnFromMethod);
            Assert.Equal(miniModel.Id, returnFromMethod.Id);
            Assert.Equal(miniModel.Name, returnFromMethod.Name);
            Assert.Equal(miniModel.PartNumber, returnFromMethod.PartNumber);
            Assert.Equal(miniModel.PointCost, returnFromMethod.PointCost);
            Assert.Equal(miniModel.BuildState, returnFromMethod.BuildState);
        }
        public async Task <IActionResult> PutMiniModel(int id, MiniModelDTO miniModel)
        {
            if (id != miniModel.Id)
            {
                return(BadRequest());
            }

            var updatedMini = await _miniModel.Update(miniModel, id, GetUserEmail());

            return(Ok(updatedMini));
        }
Example #4
0
        // UpdateAMiniModel
        public async Task <MiniModelDTO> Update(MiniModelDTO miniModel, int id)
        {
            Enum.TryParse(miniModel.BuildState, out BuildState buildState);

            MiniModel updatedMiniModel = new MiniModel()
            {
                Id           = miniModel.Id,
                Name         = miniModel.Name,
                Manufacturer = miniModel.Manufacturer,
                Faction      = miniModel.Faction,
                PointCost    = miniModel.PointCost,
                BuildState   = buildState
            };

            _context.Entry(updatedMiniModel).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(miniModel);
        }
Example #5
0
        // CreateAMiniModel
        /// <summary>
        /// The below method allows one to create an minimodel to be stored within MiniModel
        /// </summary>
        /// <param name="supplyName">the name of the minimodel item</param>
        /// <returns>the newly added minimodel item</returns>
        public async Task <MiniModelDTO> Create(MiniModelDTO miniModel, string email)
        {
            Enum.TryParse(miniModel.BuildState, out BuildState buildState);

            MiniModel entity = new MiniModel()
            {
                Name         = miniModel.Name,
                Manufacturer = miniModel.Manufacturer,
                PartNumber   = miniModel.PartNumber,
                Faction      = miniModel.Faction,
                PointCost    = miniModel.PointCost,
                BuildState   = buildState,
                Email        = email
            };

            _context.Entry(entity).State = EntityState.Added;
            await _context.SaveChangesAsync();

            return(miniModel);
        }
Example #6
0
        // GetAMiniModel
        public async Task <MiniModelDTO> GetMiniModel(int id)
        {
            MiniModel miniModel = await _context.MiniModels.FindAsync(id);

            var paintList = await _context.MinisToPaint.Where(x => x.MiniModelId == id)
                            .Include(x => x.Paint)
                            .ToListAsync();

            var suppliesList = await _context.MinisToSupply.Where(x => x.MiniModelId == id)
                               .Include(x => x.Supply)
                               .ToListAsync();

            // ============ TODO: Needs Testing =============
            List <PaintDTO>  paints   = new List <PaintDTO>();
            List <SupplyDTO> supplies = new List <SupplyDTO>();

            foreach (var item in paintList)
            {
                paints.Add(await _paint.GetPaint(item.Paint.Id));
            }

            foreach (var item in suppliesList)
            {
                supplies.Add(await _supply.GetSupply(1));
            }


            MiniModelDTO miniDto = new MiniModelDTO()
            {
                Id           = miniModel.Id,
                Name         = miniModel.Name,
                Manufacturer = miniModel.Manufacturer,
                Faction      = miniModel.Faction,
                PointCost    = miniModel.PointCost,
                BuildState   = miniModel.BuildState.ToString(),
                Paints       = paints,
                Supplies     = supplies
            };

            return(miniDto);
        }
Example #7
0
        // GetAMiniModel
        /// <summary>
        /// the below method allows one to search for a particular minimodel item
        /// </summary>
        /// <param name="email">this is the email associated with the current user (ensures they have access to minimodel item)</param>
        /// <returns>the minimodel item in question</returns>
        public async Task <MiniModelDTO> GetMiniModel(int id, string email)
        {
            MiniModel miniModel = await _context.MiniModels.Where(x => x.Email == email)
                                  .FirstOrDefaultAsync(x => x.Id == id);

            var paintList = await _context.MinisToPaint.Where(x => x.MiniModelId == id)
                            .Include(x => x.Paint)
                            .ToListAsync();

            var suppliesList = await _context.MinisToSupply.Where(x => x.MiniModelId == id)
                               .Include(x => x.Supply)
                               .ToListAsync();

            List <PaintDTO>  paints   = new List <PaintDTO>();
            List <SupplyDTO> supplies = new List <SupplyDTO>();

            foreach (var item in paintList)
            {
                paints.Add(await _paint.GetPaint(item.Paint.Id, email));
            }

            foreach (var item in suppliesList)
            {
                supplies.Add(await _supply.GetSupply(item.Supply.Id, email));
            }

            MiniModelDTO miniDto = new MiniModelDTO()
            {
                Id           = miniModel.Id,
                Name         = miniModel.Name,
                Manufacturer = miniModel.Manufacturer,
                PartNumber   = miniModel.PartNumber,
                Faction      = miniModel.Faction,
                PointCost    = miniModel.PointCost,
                BuildState   = miniModel.BuildState.ToString(),
                Paints       = paints,
                Supplies     = supplies
            };

            return(miniDto);
        }
Example #8
0
        // ================== TODO ===========================
        // CreateAMiniModel
        public async Task <MiniModelDTO> Create(MiniModelDTO miniModel)
        {
            //========================= TODO get User ID and attach it to "entity" =========================
            Enum.TryParse(miniModel.BuildState, out BuildState buildState);

            MiniModel entity = new MiniModel()
            {
                Name         = miniModel.Name,
                Manufacturer = miniModel.Manufacturer,
                PartNumber   = miniModel.PartNumber,
                Faction      = miniModel.Faction,
                PointCost    = miniModel.PointCost,
                BuildState   = buildState
            };


            _context.Entry(entity).State = EntityState.Added;
            await _context.SaveChangesAsync();

            return(miniModel);
        }
        public async Task <ActionResult <MiniModelDTO> > GetMiniModel(int id)
        {
            MiniModelDTO miniModel = await _miniModel.GetMiniModel(id, GetUserEmail());

            return(miniModel);
        }
        public async Task <ActionResult <MiniModelDTO> > PostMiniModel(MiniModelDTO miniModel)
        {
            await _miniModel.Create(miniModel, GetUserEmail());

            return(CreatedAtAction("GetMiniModel", new { id = miniModel.Id }, miniModel));
        }