/*protected void Page_Load(object sender, EventArgs e) { }*/ /// <summary> /// tran -> kmhCard /// </summary> protected static void LoadKmh(Specification_1 kmhCard, transfer tran) { kmhCard._Product_ID = tran.prod_id; kmhCard._Material_ID = tran.material_id; kmhCard.sw = tran.sw; kmhCard.stw = tran.stw; kmhCard.ss = tran.ss; kmhCard.sp = tran.sp; kmhCard.sd = tran.sd; kmhCard.h_got = tran.gotov_him ? "ГОТОВ" : "НЕ ГОТОВ"; kmhCard.t_got = tran.gotov_tech ? "ГОТОВ" : "НЕ ГОТОВ"; kmhCard.s_got = tran.gotov_svar ? "ГОТОВ" : "НЕ ГОТОВ"; kmhCard.gt_kmh = tran.gotov_kmh ? 1 : 0; kmhCard.no = tran.no; kmhCard.cmt = tran.cmt_ogt; kmhCard.Route = tran.route; kmhCard._dictPVDID = tran.pvd_id == null ? new Guid("C23B8D6F-FFA7-45C2-8F3B-D6CA53566906") : tran.pvd_id.Value; kmhCard._dictUMID = tran.um_id; kmhCard._dictSFID = tran.sf_id; }
public static string SaveKmhCard(transfer card, int saveType, Guid order_id) { DateTime CurDateTime = DateTime.Now; // saveType == 1 (сохранить как основную) // saveType == 2 (сохранить как приказную) // saveType == 3 (как приказную и как основную) using (ProductProvider provider = new ProductProvider()) { // {!} здесь может быть проблемное место, потому что надо оборачивать действия // в одну транзакцию // проходим два раза по коду // 1 - стандартная карточка // 2 - карточка по приказу for (int index = 1; index <= 2; index++) { if (saveType == 2 && index == 1) continue; if (saveType == 1 && index == 2) continue; // получаем все существующие стандарные карты для данного продукта var all_kmh = from kmh in provider.Specification_1s where Object.Equals(kmh.OrderArticleID, index == 1 ? null : new Guid?(order_id)) && kmh._Product_ID == card.prod_id select kmh; // переносим полученные данные в карту Specification_1 savedCard = new Specification_1(); savedCard.id = Guid.NewGuid(); savedCard.OrderArticleID = (index == 1 ? null : new Guid?(order_id)); LoadKmh(savedCard, card); // устанавливаем время действия карты savedCard.FinishDT = PlusInfinity; if (all_kmh.Count() == 0) { // если других карт нету, даты от -∞ до +∞ // savedCard.StartDT = MinusInfinity; savedCard.StartDT = CurDateTime; } else { // если другие карты есть, дата от CurDateTime+1 до +∞ savedCard.StartDT = CurDateTime; // выбираем актуальные карты и завершаем дату их действия List<Specification_1> actual_kmh = all_kmh.Where(c => c.StartDT <= CurDateTime && c.FinishDT > CurDateTime).ToList(); foreach (Specification_1 iter_kmh in actual_kmh) { iter_kmh.FinishDT = CurDateTime; } } savedCard.dtle = CurDateTime; try { savedCard.userID = (Guid)HttpContext.Current.Session["userID"]; } catch { } provider.Specification_1s.InsertOnSubmit(savedCard); } // Сохраняем изменения provider.SubmitChanges(); } PostResult result = new PostResult("ok", 0) { TimeStamp = CurDateTime.ToUniversalTime() }; return result.ToString(); }
/// <summary> /// kmhCard -> tran /// </summary> protected static void FillKmh(Specification_1 kmhCard, transfer tran, DateTime currentDT) { //tran.prod_id = kmhCard._Product_ID.Value; if (kmhCard._Material_ID != null) { tran.material = kmhCard.Material.superpole; tran.material_id = kmhCard._Material_ID; } tran.sw = kmhCard.sw; tran.stw = kmhCard.stw; tran.ss = kmhCard.ss; tran.sp = kmhCard.sp; tran.sd = kmhCard.sd; tran.gotov_him = kmhCard.h_got.Trim() == "ГОТОВ" ? true : false; tran.gotov_tech = kmhCard.t_got.Trim() == "ГОТОВ" ? true : false; tran.gotov_svar = kmhCard.s_got.Trim() == "ГОТОВ" ? true : false; tran.gotov_kmh = kmhCard.gt_kmh == 1 ? true : false; tran.no = kmhCard.no; tran.cmt_ogt = kmhCard.cmt; tran.route = kmhCard.Route == null ? "" : kmhCard.Route.Trim(); tran.pvd_id = kmhCard._dictPVDID; tran.pvd = tran.pvd_id == null ? "" : kmhCard._dictPVD.pvdn; tran.um_id = kmhCard._dictUMID; tran.um = tran.um_id == null ? "" : kmhCard._dictUM.umn1; tran.sf_id = kmhCard._dictSFID; tran.sf = tran.sf_id == null ? "" : kmhCard._dictSF.sfn; tran.ste_id = kmhCard._dictS_TEID; tran.ste = tran.ste_id == null ? "" : kmhCard._dictS_te.type; tran.actual = (kmhCard.StartDT < currentDT && kmhCard.FinishDT > currentDT); tran.isprikaz = !(kmhCard.OrderArticleID == null); try { using (UserProvider provider = new UserProvider()) { tran.last_change_date = kmhCard.dtle; tran.last_change_user = (from u in provider.Users where u.ID == kmhCard.userID select u.Name).Single(); } } catch {} }