Beispiel #1
0
        public HttpResponseMessage ConsulterStock(string centrale)
        {
            if (!isSessionExpired())
            {
                _centrale = new utils.MongoDB().getCollection <Centrale>("Centrale");
                _stock    = new utils.MongoDB().getCollection <Stock>("Stock");

                HttpResponseMessage response = new HttpResponseMessage();
                User user = getUserFromCookies();

                Centrale centraleDB = _centrale.AsQueryable().
                                      FirstOrDefault(c => c.userId == user._id && c.reference == centrale);
                if (centraleDB == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, new Exception("La centrale " + centrale + " n'a pas été trouvée.")));
                }

                Stock stockDB = _stock.AsQueryable().OrderByDescending(s => s.dateCreation).First(s => s.idCentrale == centraleDB._id);
                if (stockDB == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception("La base de données est corrompue. Le stock de la centrale " + centrale + " est introuvable.")));
                }

                response.StatusCode = HttpStatusCode.OK;
                response.Content    = new StringContent(stock(centraleDB, stockDB));
                return(response);
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, new Exception("Session expirée, merci de vous reconnecter")));
            }
        }
Beispiel #2
0
        private string stock(Centrale centraleDB, Stock stockDB)
        {
            string reference             = centraleDB.reference;
            double stock                 = stockDB.quantite;
            double capacite              = centraleDB.capacite;
            double pourcentageOccupation = 100 * stock / capacite;

            return("Stock de la centrale " + reference + " : \n\t" +
                   stock + " KW / " + capacite + " KW (" + pourcentageOccupation + " % utilisés)");
        }
Beispiel #3
0
        private HttpResponseMessage consume(Usage consumption)
        {
            HttpResponseMessage response = new HttpResponseMessage();
            User user = getUserFromCookies();

            Centrale centraleDB = _centrale.AsQueryable().
                                  FirstOrDefault(c => c.userId == user._id && c.reference == consumption.reference);

            if (centraleDB == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, new Exception("La centrale " + consumption.reference + " n'a pas été trouvée.")));
            }

            Stock stockDB = _stock.AsQueryable().OrderByDescending(s => s.dateCreation).First(s => s.idCentrale == centraleDB._id);

            if (stockDB == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception("La base de données est corrompue. Le stock de la centrale " + centraleDB.reference + " est introuvable.")));
            }

            double quantiteDB         = stockDB.quantite;
            double capaciteDB         = centraleDB.capacite;
            double rechargeAcceptable = capaciteDB - quantiteDB;

            if (consumption.quantite > quantiteDB)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, new Exception("La centrale n'a qu'un stock de " + quantiteDB + "KW.")));
            }

            Stock newStock = new Stock()
            {
                _id          = Guid.NewGuid().ToString(),
                idCentrale   = centraleDB._id,
                quantite     = quantiteDB - consumption.quantite,
                dateCreation = DateTime.Now
            };

            _stock.InsertOne(newStock);

            //refresh de la base pour actualiser le response.content
            stockDB = refreshStock(centraleDB);

            response.StatusCode = HttpStatusCode.OK;
            response.Content    = new StringContent("La centrale " + centraleDB.reference + " a été vidée de " + consumption.quantite + " KW.\n" + stock(centraleDB, stockDB));
            return(response);
        }
Beispiel #4
0
        private HttpResponseMessage create(Centrale centraleRequest)
        {
            HttpResponseMessage response = new HttpResponseMessage();
            User user = getUserFromCookies();

            Centrale centraleDB = _centrale.AsQueryable().FirstOrDefault(c =>
                                                                         c.reference == centraleRequest.reference &&
                                                                         c.userId == user._id);

            if (centraleDB == null)
            {
                Centrale newCentrale = new Centrale()
                {
                    _id          = Guid.NewGuid().ToString(),
                    userId       = user._id,
                    reference    = centraleRequest.reference,
                    type         = centraleRequest.type,
                    capacite     = centraleRequest.capacite,
                    dateCreation = DateTime.Now
                };

                Stock newStock = new Stock()
                {
                    _id          = Guid.NewGuid().ToString(),
                    idCentrale   = newCentrale._id,
                    quantite     = 0,
                    dateCreation = newCentrale.dateCreation
                };

                _centrale.InsertOne(newCentrale);
                _stock.InsertOne(newStock);

                response.Content    = new StringContent(newCentrale.reference + " a été créée.");
                response.StatusCode = HttpStatusCode.Created;
                return(response);
            }
            else
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.BadRequest,
                           new HttpException("La centrale " + centraleRequest.reference + " existe déjà pour le user " + user.login + ".")));
            }
        }
Beispiel #5
0
        public HttpResponseMessage CreateCentrale(Centrale centraleRequest)
        {
            LoginInfos loginInfos = new LoginInfos();

            if (!isSessionExpired())
            {
                if (ModelState.IsValid)
                {
                    _centrale = new utils.MongoDB().getCollection <Centrale>("Centrale");
                    _stock    = new utils.MongoDB().getCollection <Stock>("Stock");

                    return(create(centraleRequest));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, new Exception("Session expirée, merci de vous reconnecter.")));
            }
        }
Beispiel #6
0
 private Stock refreshStock(Centrale centraleDB)
 {
     _stock = new utils.MongoDB().getCollection <Stock>("Stock");
     return(_stock.AsQueryable().OrderByDescending(s => s.dateCreation).First(s => s.idCentrale == centraleDB._id));
 }
 private void btnNieuwCentraleAanmaken_Click(object sender, EventArgs e)
 {
     Centrale centrale = new Centrale(nudStartTarief.Value, nudPrijsPerLiter.Value);
 }