/// <summary> /// Returns Transformers list for particular allegiance in specified (Asc/Desc)ordered list /// </summary> /// <param name="AllegianceId">Transformer Allegiance Id</param> /// <param name="sorted">boolean value as true for ascending or false for descending</param> /// <returns>List</returns> public async Task <IActionResult> ExecuteList(string Allegiance, bool sorted) { IActionResult response; try { TransformerAllegiance transformerAllegiance = await _transformerRepository.getTransformerAllegiance(s => s.AllegianceName.ToLower().Trim().Contains(Allegiance.ToLower().Trim())); SortedList <string, Transformer> sortedTransformers = await TransformersListForAllegiance(transformerAllegiance); if (sorted) { response = new OkObjectResult(TransformerListWithAllegianceValue(sortedTransformers.Select(s => s.Value).ToList <Transformer>(), transformerAllegiance)); } else { response = new OkObjectResult(TransformerListWithAllegianceValue(sortedTransformers.Reverse().Select(s => s.Value).ToList <Transformer>(), transformerAllegiance)); } } catch (Exception ex) { response = new ObjectResult(ex); } return(response); }
/// <summary> /// Adds transformer to db /// </summary> /// <param name="transformer">Transformer model entity to be added</param> /// <returns>string</returns> public async Task <IActionResult> ExecuteAdd(Transformer transformer) { IActionResult response; try { var validationResults = new List <ValidationResult>(); var isValid = Validator.TryValidateObject(transformer, new ValidationContext(transformer, serviceProvider: null, items: null), validationResults); if (!isValid) { response = new ObjectResult(string.Join(", ", validationResults.Select(s => s.ErrorMessage))) { StatusCode = StatusCodes.Status412PreconditionFailed }; } else { if (transformer.Name.ToLower().Trim().Contains("optimus") && transformer.Name.ToLower().Trim().Contains("prime") && transformer.AllegianceId == (_transformerRepository .getTransformerAllegiance(s => s.AllegianceName.ToLower().Trim().Contains("decepticon"))) .GetAwaiter().GetResult().TransformerAllegianceId) // Is decepticon ? { response = new ObjectResult("Optimus prime cannot be decepticon"); } else { Transformer transformerExistCheck = await _transformerRepository .getTransformer(s => (s.Name.ToLower().Trim() == transformer.Name.ToLower().Trim() && s.AllegianceId == transformer.AllegianceId ) ); if (transformerExistCheck != null) { TransformerAllegiance transformerAllegianceType = await _transformerRepository.getTransformerAllegiance(s => s.TransformerAllegianceId == transformer.AllegianceId); response = new ObjectResult($"{transformer.Name} with {transformerAllegianceType.AllegianceName} already exists !!"); } else { int returnVal = await _transformerRepository.TransformerAdd(transformer); response = (returnVal > 0 ? new OkObjectResult("Transformer added succesfully") : new ObjectResult("Transformer was not added")); } } } } catch (Exception ex) { response = new ObjectResult(ex); } return(response); }
/// <summary> /// Get transformers sorted list filtered by a particular Allegiance /// </summary> /// <param name="transformerAllegiance">TransformerAllegiance</param> /// <returns>SortedList<string, Transformer></returns> public async Task <SortedList <string, Transformer> > TransformersListForAllegiance(TransformerAllegiance transformerAllegiance) { SortedList <string, Transformer> sortedTransformers = new SortedList <string, Transformer>(); if (transformerAllegiance != null) { IDictionary <string, Transformer> transformers = (await _transformerRepository .TransformersList(s => s.AllegianceId == transformerAllegiance.TransformerAllegianceId)) .ToDictionary(x => x.Name, x => x); if (transformers.Count > 0) { sortedTransformers = new SortedList <string, Transformer>(transformers); } } return(sortedTransformers); }
/// <summary> /// Updates the Transformer entity with TransformerAllegiance object /// </summary> /// <param name="sortedList">List<Transformer></param> /// <param name="tAllegiance">TransformerAllegiance</param> /// <returns></returns> public List <Transformer> TransformerListWithAllegianceValue(List <Transformer> sortedList, TransformerAllegiance tAllegiance) { return(sortedList.Select(s => { s.Allegiance = new List <TransformerAllegiance>() { tAllegiance }; return s; }).ToList()); }
/// <summary> /// Updates existing transformer entity based on provided transformerId with updated transformer model entity /// </summary> /// <param name="transformer">Transformer model entity</param> /// <param name="transformerId">Transformer Id</param> /// <returns></returns> public async Task <IActionResult> ExecuteUpdate(Transformer transformer, int transformerId) { IActionResult response; try { var validationResults = new List <ValidationResult>(); var isValid = Validator.TryValidateObject(transformer, new ValidationContext(transformer, serviceProvider: null, items: null), validationResults); if (!isValid) { response = new ObjectResult(string.Join(", ", validationResults.Select(s => s.ErrorMessage))) { StatusCode = StatusCodes.Status412PreconditionFailed }; } else { TransformerAllegiance transformerAllegiance = await _transformerRepository.getTransformerAllegiance(s => s.TransformerAllegianceId == transformer.AllegianceId); if (transformerAllegiance == null) { response = new NotFoundObjectResult("Transformer allegiance not found!!"); } else { Transformer transformerExistCheck = await _transformerRepository.getTransformer(s => (s.Name.ToLower().Trim() == transformer.Name.ToLower().Trim() && s.AllegianceId == transformer.AllegianceId ) ); if (transformerExistCheck != null) { TransformerAllegiance transformerAllegianceType = await _transformerRepository.getTransformerAllegiance(s => s.TransformerAllegianceId == transformer.AllegianceId); response = new ObjectResult($"{transformer.Name} with {transformerAllegianceType.AllegianceName} already exists and hence cannot be updated !!"); } else { Transformer botToUpdate = await _transformerRepository.getTransformer(s => s.TransformerId == transformerId); if (botToUpdate != null) { botToUpdate.AllegianceId = transformer.AllegianceId; botToUpdate.Name = transformer.Name; botToUpdate.Strength = transformer.Strength; botToUpdate.Intelligence = transformer.Intelligence; botToUpdate.Speed = transformer.Speed; botToUpdate.Endurance = transformer.Endurance; botToUpdate.Rank = transformer.Rank; botToUpdate.Courage = transformer.Courage; botToUpdate.Firepower = transformer.Firepower; botToUpdate.Skill = transformer.Skill; int returnVal = await _transformerRepository.TransformerUpdate(botToUpdate); response = (returnVal > 0 ? new OkObjectResult("Transformer updated successfully") : new ObjectResult("Transformer was not updated")); } else { response = new NotFoundObjectResult($"Transformer with TransformerId = {transformerId} not found!!"); } } } } } catch (Exception ex) { response = new ObjectResult(ex); } return(response); }