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);
        }
Example #2
0
 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));
 }