public async Task <SurfReport> Post([FromBody] SurfReportContract clientReport) { var report = clientReport.ToDomain(); ValidationResult vld = await ValidatorSvc.ValidateSurfReport(report); if (!vld.Success) { Response.StatusCode = 400; var jsonString = JsonConvert.SerializeObject(vld); Response.ContentType = new MediaTypeHeaderValue("application/json").ToString(); await Response.WriteAsync(jsonString, Encoding.UTF8); return(null); } SurfReport rtn = null; if (vld.Success) { rtn = await UserReportsSvc.SaveSurfReport(report); } //this happens if the given poster has already provided a report for the day //TODO: handle this more elegantly if (rtn == null && vld.Success) { Response.StatusCode = 204; var jsonString = "{\"message\":\"You have already submitted a report for today.\"}"; Response.ContentType = new MediaTypeHeaderValue("application/json").ToString(); await Response.WriteAsync(jsonString, Encoding.UTF8); return(null); } return(rtn); }
public static SurfReport ToDomain(this SurfReportContract src) { return(new SurfReport(src.Rating, src.Poster, src.Location, src.Date, src.Attachments, src.WaveSize, src.Period)); }
public async Task <SurfReport> Put([FromBody] SurfReportContract report) { return(await Post(report)); }