public UpdatableProperties UpdateProperties(UpdatableProperties updatableProperties) { int updatedQuality = 0; if (updatableProperties.SellIn > 10) { updatedQuality = updatableProperties.Quality + 1; } if (updatableProperties.SellIn > 5 && updatableProperties.SellIn <= 10) { updatedQuality = updatableProperties.Quality + 2; } if (updatableProperties.SellIn > 0 && updatableProperties.SellIn <= 5) { updatedQuality = updatableProperties.Quality + 3; } if (updatedQuality > 50) { updatedQuality = 50; } return(new UpdatableProperties(updatableProperties.SellIn - 1, updatedQuality)); }
public UpdatableProperties UpdateProperties(UpdatableProperties updatableProperties) { int quality = updatableProperties.Quality; if (updatableProperties.Quality < 50) { quality = updatableProperties.Quality + 1; } return(new UpdatableProperties(updatableProperties.SellIn - 1, quality)); }
public UpdatableProperties UpdateProperties(UpdatableProperties updatableProperties) { int quality; if (updatableProperties.SellIn <= 0) { quality = updatableProperties.Quality - 2; } else { quality = updatableProperties.Quality - 1; } if (quality < 0) { quality = 0; } return(new UpdatableProperties(updatableProperties.SellIn - 1, quality)); }
public static bool TryParsingRequestFor <T>( HttpListenerContext _Context, out JObject _SuccessResultJson, bool _bDeserialize, out T _SuccessResultDeserialized, out BWebServiceResponse _FailureResponse, Action <string> _ErrorMessageAction = null) { _FailureResponse = BWebResponse.InternalError(""); _SuccessResultDeserialized = default; _SuccessResultJson = null; string[] MustHaveProperties; string[] UpdatableProperties; Dictionary <string, Func <JToken, bool> > UpdatablePropertiesValidityCheck; if (typeof(T) == typeof(ModelDBEntry)) { MustHaveProperties = ModelDBEntry.MustHaveProperties; UpdatableProperties = ModelDBEntry.UpdatableProperties; UpdatablePropertiesValidityCheck = ModelDBEntry.UpdatablePropertiesValidityCheck; } else if (typeof(T) == typeof(Revision)) { MustHaveProperties = Revision.MustHaveProperties; UpdatableProperties = Revision.UpdatableProperties; UpdatablePropertiesValidityCheck = Revision.UpdatablePropertiesValidityCheck; } else if (typeof(T) == typeof(FileEntry)) { MustHaveProperties = null; UpdatableProperties = FileEntry.UpdatableProperties; UpdatablePropertiesValidityCheck = FileEntry.UpdatablePropertiesValidityCheck; } else { throw new ArgumentException("Only ModelDBEntry and Revision are supported."); } using (var InputStream = _Context.Request.InputStream) { var NewObjectJson = new JObject(); using (var ResponseReader = new StreamReader(InputStream)) { try { var ParsedBody = JObject.Parse(ResponseReader.ReadToEnd()); var PropertiesList = new List <string>(); foreach (var Child in ParsedBody) { PropertiesList.Add(Child.Key); } if (MustHaveProperties != null) { foreach (var MustHaveProperty in MustHaveProperties) { if (!PropertiesList.Contains(MustHaveProperty)) { _FailureResponse = BWebResponse.BadRequest("Request body must contain all necessary fields."); return(false); } } } foreach (var Child in ParsedBody) { if (!UpdatablePropertiesValidityCheck[Child.Key](Child.Value)) { _FailureResponse = BWebResponse.BadRequest("Given field " + Child.Key + " has invalid value."); return(false); } if (UpdatableProperties.Contains(Child.Key)) { NewObjectJson[Child.Key] = Child.Value; } else { _FailureResponse = BWebResponse.BadRequest("Unexpected field " + Child.Value.ToString()); return(false); } } } catch (Exception e) { _ErrorMessageAction?.Invoke("Read request body stage has failed. Exception: " + e.Message + ", Trace: " + e.StackTrace); _FailureResponse = BWebResponse.BadRequest("Malformed request body. Request must be a valid json form."); return(false); } } //For other elements to be created without any elements _SuccessResultJson = NewObjectJson; if (_bDeserialize) { _SuccessResultDeserialized = JsonConvert.DeserializeObject <T>(NewObjectJson.ToString()); } } return(true); }
public UpdatableProperties UpdateProperties(UpdatableProperties updatableProperties) { return(new UpdatableProperties(updatableProperties.SellIn, updatableProperties.Quality)); }