/// <summary> /// Controle de la nouvelle pression et de la date de peremption pour affichage dynamique /// </summary> /// <param name="reportvalue">valeur relevée à l'instant</param> /// <param name="continumber">Numéro Conti de la bouteille</param> /// <param name="lastpressure">Pression précédente</param> /// <param name="process">id dans la table location -> id= 1 BM ; id= 5 BR</param> /// <param name="expiration_date">date d'expiration</param> /// <returns>affichage dynamique: vert si OK, Orange si Warning, Rouge si NOK</returns> public ActionResult NewReport(int reportvalue, int continumber, int?lastpressure, int process, DateTime expiration_date) { tbl_607_gaz_reporting tbl_607_Gaz_Reporting = new tbl_607_gaz_reporting(); string user = System.Web.HttpContext.Current.User.Identity.Name.ToString(); int idtech = db.tbl_607_actors.Where(t => t.id_uid == user).Select(t => t.id).FirstOrDefault(); int idbottle = db.tbl_607_bottle.Where(t => t.bottle_conti_number == continumber.ToString() && t.FK_ID_location == process).Select(t => t.ID).FirstOrDefault(); //la pression précédente est supérieure à la pression relevée et la bouteille n'est pas expirée //on retourne le message "invalid" if (lastpressure <= reportvalue & expiration_date > DateTime.Now) { ViewBag.message = "invalid"; return(View("_PartialMessageValidation")); } //la pression est inférieure à la pression précédente et est supérieure à 50 bars, et la bouteille n'est pas expirée //on retourne le message "ok" else if (lastpressure > reportvalue & reportvalue > 50 & expiration_date > DateTime.Now) { tbl_607_Gaz_Reporting.FK_ID_actors = idtech; tbl_607_Gaz_Reporting.FK_ID_bottle = idbottle; tbl_607_Gaz_Reporting.pressure_value = reportvalue; tbl_607_Gaz_Reporting.reporting_date = DateTime.Now; db.tbl_607_gaz_reporting.Add(tbl_607_Gaz_Reporting); db.SaveChanges(); ViewBag.message = "ok"; return(View("_PartialMessageValidation")); } //la pression est inférieure à la pression précédente et est comprise entre 50 et 20 bars, et la bouteille n'est pas expirée //on retourne le message "warning" else if (lastpressure > reportvalue & reportvalue <= 50 && reportvalue > 20 & expiration_date > DateTime.Now) { tbl_607_Gaz_Reporting.FK_ID_actors = idtech; tbl_607_Gaz_Reporting.FK_ID_bottle = idbottle; tbl_607_Gaz_Reporting.pressure_value = reportvalue; tbl_607_Gaz_Reporting.reporting_date = DateTime.Now; db.tbl_607_gaz_reporting.Add(tbl_607_Gaz_Reporting); db.SaveChanges(); ViewBag.message = "warning"; return(View("_PartialMessageValidation")); } //la bouteille est expirée //on retourne le message "expired" else if (expiration_date <= DateTime.Now) { tbl_607_Gaz_Reporting.FK_ID_actors = idtech; tbl_607_Gaz_Reporting.FK_ID_bottle = idbottle; tbl_607_Gaz_Reporting.pressure_value = reportvalue; tbl_607_Gaz_Reporting.reporting_date = DateTime.Now; db.tbl_607_gaz_reporting.Add(tbl_607_Gaz_Reporting); db.SaveChanges(); ViewBag.message = "expired"; return(View("_PartialMessageValidation")); } //la pression est inférieure à la pression précédente et est inférieure à 20 bars, et la bouteille n'est pas expirée //on retourne le message "nok" else { tbl_607_Gaz_Reporting.FK_ID_actors = idtech; tbl_607_Gaz_Reporting.FK_ID_bottle = idbottle; tbl_607_Gaz_Reporting.pressure_value = reportvalue; tbl_607_Gaz_Reporting.reporting_date = DateTime.Now; db.tbl_607_gaz_reporting.Add(tbl_607_Gaz_Reporting); db.SaveChanges(); ViewBag.message = "nok"; return(View("_PartialMessageValidation")); } }
public ActionResult SaveData() { try { // vérification de l'existance du BL // extraction des numeros de BL existants sur le contrat var BLBase = (db.tbl_607_shipping_delivery.Include(t => t.tbl_607_shipping_request).Include(s => s.tbl_607_shipping_request.tbl_607_order) .Include(o => o.tbl_607_shipping_request.tbl_607_order.tbl_607_order_details)) .Where(o => o.tbl_607_shipping_request.tbl_607_order.ID == BottlereceptionWizardViewModelTemp.idcontract).Select(t => t.BL_ref).ToList(); tbl_607_shipping_delivery tbl_607_Shipping_Delivery = new tbl_607_shipping_delivery(); // comparaison avec le numero saisi par l'utilisateur var Control = BLBase.Contains(BottlereceptionWizardViewModelTemp.BL_ref); if (Control) { //BL existant, nous allons donc uniquement proceder à un update } else { //BL inexistant, creation tbl_607_Shipping_Delivery.BL_ref = BottlereceptionWizardViewModelTemp.BL_ref; tbl_607_Shipping_Delivery.reception_date = BottlereceptionWizardViewModelTemp.reception_date; tbl_607_Shipping_Delivery.FK_ID_shipping_request = BottlereceptionWizardViewModelTemp.FK_ID_shipping_request; db.tbl_607_shipping_delivery.Add(tbl_607_Shipping_Delivery); db.SaveChanges(); //sauvegarde } // le certificat de conformite est unique et est lie a une bouteille tbl_607_conformity_certificate tbl_607_Conformity_Certificate = new tbl_607_conformity_certificate(); tbl_607_Conformity_Certificate.ID = BottlereceptionWizardViewModelTemp.conformity_certificate; tbl_607_Conformity_Certificate.fabrication_date = BottlereceptionWizardViewModelTemp.fabrication_date; tbl_607_Conformity_Certificate.expiration_date = BottlereceptionWizardViewModelTemp.expiration_date; db.tbl_607_conformity_certificate.Add(tbl_607_Conformity_Certificate); db.SaveChanges(); //sauvegarde // recuperation des id des enregistrements crees var FK_ID_shipping_delivery = db.tbl_607_shipping_delivery.Select(t => t.ID).Max(); // recuperation de l'id location pour stock var stock = db.tbl_607_location.Where(t => t.bottle_location == "STOCK").Select(t => t.ID).First(); // enregistrement dans la table bouteille tbl_607_bottle tbl_607_Bottle = new tbl_607_bottle(); tbl_607_Bottle.manufacturer_bottle_number = BottlereceptionWizardViewModelTemp.manufacturer_bottle_number; tbl_607_Bottle.bottle_conti_number = BottlereceptionWizardViewModelTemp.bottle_conti_number; tbl_607_Bottle.FK_ID_conformity_certificate = BottlereceptionWizardViewModelTemp.conformity_certificate; tbl_607_Bottle.FK_ID_shipping_delivery = FK_ID_shipping_delivery; tbl_607_Bottle.FK_ID_order = BottlereceptionWizardViewModelTemp.idcontract; tbl_607_Bottle.FK_ID_location = stock; db.tbl_607_bottle.Add(tbl_607_Bottle); db.SaveChanges(); //sauvegarde // mise à jour de la quantité recue sur le poste tbl_607_order_details tbl_607_Order_Detail = db.tbl_607_order_details.Where(t => t.poste_number == BottlereceptionWizardViewModelTemp.posteNumber && t.FK_ID_order == BottlereceptionWizardViewModelTemp.idcontract).First(); tbl_607_Order_Detail.recieved_quantity = tbl_607_Order_Detail.recieved_quantity++; db.SaveChanges(); //sauvegarde // mise a jour de la quantité sur la demande de livraison tbl_607_shipping_request_details tbl_607_Shipping_Request_Details = db.tbl_607_shipping_request_details.Where(t => t.FK_shipping_request == BottlereceptionWizardViewModelTemp.FK_ID_shipping_request).FirstOrDefault(); tbl_607_Shipping_Request_Details.reception_quantity = tbl_607_Shipping_Request_Details.reception_quantity++; db.SaveChanges(); //sauvegarde // Recuperation de l'ID Bottle. L'ID gaz est deja connu = key du dico var idBottle = db.tbl_607_bottle.Select(t => t.ID).Max(); //Nouvelle relève: valeurs par défaut 999bars et acteur: admin tbl_607_gaz_reporting tbl_607_Gaz_Reporting = new tbl_607_gaz_reporting(); tbl_607_Gaz_Reporting.pressure_value = 999; tbl_607_Gaz_Reporting.FK_ID_actors = 29; tbl_607_Gaz_Reporting.FK_ID_bottle = idBottle; tbl_607_Gaz_Reporting.reporting_date = DateTime.Now; db.tbl_607_gaz_reporting.Add(tbl_607_Gaz_Reporting); // Recuperation des reals gaz dans le dictionnaire foreach (KeyValuePair <int, float> value in Tbl_607_Real_Gaz_Content_temp) { tbl_607_real_gaz_content tbl_607_Real_Gaz_Content = new tbl_607_real_gaz_content(); tbl_607_join_bottle_gaz tbl_607_Join_Bottle_Gaz = new tbl_607_join_bottle_gaz(); // Enregistrement des reals gaz tbl_607_Real_Gaz_Content.real_content = value.Value; //force l'ecriture dans la base alors que nous sommes encore dans la boucle db.tbl_607_real_gaz_content.Add(tbl_607_Real_Gaz_Content); db.SaveChanges(); //sauvegarde //// Recuperation de l'id real gaz var fk_real = db.tbl_607_real_gaz_content.Select(t => t.ID).Max(); //Ecriture de la jointure tbl_607_Join_Bottle_Gaz.FK_ID_gaz = value.Key; tbl_607_Join_Bottle_Gaz.FK_ID_bottle = idBottle; tbl_607_Join_Bottle_Gaz.FK_ID_real_content = fk_real; db.tbl_607_join_bottle_gaz.Add(tbl_607_Join_Bottle_Gaz); //force l'ecriture dans la base alors que nous sommes encore dans la boucle db.SaveChanges(); //sauvegarde } //generation de la vue return(View("Index")); } catch (Exception ex) { //generation de la vue affichage erreur return(RedirectToAction("Index", "Ooops", new { message = ex })); } }