예제 #1
0
        private static async Task <HttpResponseMessage> PartiPost(HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[POST Parti] ble kalt");
            var repo = new BekkSjakkRepository();

            dynamic data = await req.Content.ReadAsAsync <object>();

            if (data == null)
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest));
            }

            var hvitSpillerId  = (int)data.hvitId;
            var svartSpillerId = (int)data.svartId;
            var dato           = (DateTimeOffset)data.dato;
            var resultat       = (PartiResultat)Enum.Parse(typeof(PartiResultat), (string)data.resultat);
            var pgn            = (string)data.pgn;
            var partiDao       = new PartiDao(hvitSpillerId, svartSpillerId, dato, resultat, pgn);
            var suksess        = await repo.LeggTilParti(partiDao);

            await OppdaterEloRatinger(repo, partiDao);

            var statusCode = suksess ? HttpStatusCode.OK : HttpStatusCode.BadRequest;

            return(req.CreateResponse(statusCode));
        }
예제 #2
0
        private static async Task <HttpResponseMessage> PartiGet(HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[GET Parti] ble kalt");
            var repo = new BekkSjakkRepository();

            string partiIdString = req.GetQueryNameValuePairs()
                                   .FirstOrDefault(q => q.Key == "id").Value;

            if (string.IsNullOrEmpty(partiIdString))
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest));
            }

            int partiId = int.Parse(partiIdString);
            var parti   = await repo.HentParti(partiId);

            if (parti.HarVerdi)
            {
                return(req.CreateResponse(HttpStatusCode.OK, parti.Verdi, "application/json"));
            }
            else
            {
                return(req.CreateResponse(HttpStatusCode.NotFound));
            }
        }
예제 #3
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[GET Bekkere] ble kalt");
            var repo = new BekkSjakkRepository();
            List <Models.Bekker> bekkere = await repo.HentBekkere();

            return(req.CreateResponse(HttpStatusCode.OK, bekkere, "application/json"));
        }
예제 #4
0
        private static async Task <HttpResponseMessage> PartiGet(HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[GET Partier] ble kalt");
            var repo = new BekkSjakkRepository();

            var parti = await repo.HentPartier();

            return(req.CreateResponse(HttpStatusCode.OK, parti, "application/json"));
        }
예제 #5
0
        private static async Task <HttpResponseMessage> BekkerPost(HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[POST Bekker] ble kalt");
            var repo = new BekkSjakkRepository();

            dynamic data = await req.Content.ReadAsAsync <object>();

            var bekkerNavn = (string)data?.navn;

            if (bekkerNavn != null)
            {
                var suksess = await repo.LeggTilBekker(new Bekker(bekkerNavn));

                if (suksess)
                {
                    return(req.CreateResponse(HttpStatusCode.Created));
                }
            }
            return(req.CreateResponse(HttpStatusCode.BadRequest));
        }
예제 #6
0
        private static async Task OppdaterEloRatinger(BekkSjakkRepository repo, PartiDao parti)
        {
            var hvitTask  = repo.HentBekkerPåId(parti.SpillerHvitId);
            var svartTask = repo.HentBekkerPåId(parti.SpillerSvartId);
            await Task.WhenAll(hvitTask, svartTask);

            var hvitBekker  = hvitTask.Result;
            var svartBekker = svartTask.Result;

            if (!hvitBekker.HarVerdi || !svartBekker.HarVerdi)
            {
                throw new Exception("Klarte ikkje å oppdatere ratingar");
            }
            var nyeElo = Elo.FinnNyeEloRatinger(hvitBekker.Verdi, svartBekker.Verdi, parti.Resultat);

            hvitBekker.Verdi.Elo  = nyeElo.Item1;
            svartBekker.Verdi.Elo = nyeElo.Item2;
            var oppdaterTask1 = repo.OppdaterBekker(hvitBekker.Verdi);
            var oppdaterTask2 = repo.OppdaterBekker(svartBekker.Verdi);
            await Task.WhenAll(oppdaterTask1, oppdaterTask2);
        }
예제 #7
0
        private static async Task <HttpResponseMessage> BekkerGet(HttpRequestMessage req, TraceWriter log)
        {
            log.Info("[GET Bekker] ble kalt");
            var repo       = new BekkSjakkRepository();
            var parameters = req.GetQueryNameValuePairs().ToList();

            string navn = parameters.FirstOrDefault(q => q.Key == "navn").Value;

            if (!string.IsNullOrEmpty(navn))
            {
                return(HentBekkerRespons(req, await repo.HentBekkerPåNavn(navn)));
            }

            string idString = parameters.FirstOrDefault(q => q.Key == "id").Value;
            int    id;

            if (!string.IsNullOrEmpty(idString) && int.TryParse(idString, out id))
            {
                return(HentBekkerRespons(req, await repo.HentBekkerPåId(id)));
            }
            return(req.CreateResponse(HttpStatusCode.BadRequest));
        }