// Проверка перевода маршрута из статуса "Принят" в статус "Не принят"
        public void ChangeRouteStatus()
        {
            int          count     = 0;                         // кол-во эл-в списка
            RouteDAO     routeDAO  = new RouteDAO();
            List <Route> routelist = routeDAO.GetReadyRoutes(); // получаем все маршруты со статусом "Принят"

            foreach (Route route in routelist)
            {
                routeDAO.ChangeState(route.Id_Route, 2); // меняем статус на "Не принят"
                count++;
            }
            List <Route> routelist2 = routeDAO.GetAllRoutes(); // получаем все маршруты

            //что ожидается:
            List <Route> expected = new List <Route>();

            for (int i = 0; i < count; i++)
            {
                Route route = new Route();
                route.Route_state = 2;
                expected.Add(route);
            }

            // Assert
            for (int i = 0; i < count; i++)
            {
                Assert.AreEqual(expected[i].Route_state, routelist2[i].Route_state);
            }

            // Откат данных
            foreach (Route route in routelist)
            {
                routeDAO.ChangeState((route.Id_Route), 1); // меняем статус на "черновик"
            }
        }
Beispiel #2
0
 public bool addBronTicket(int idRoute, Ticket ticket)
 {
     try
     {
         ticket.Route = GetTicketRoute(idRoute);
         RouteDAO routeDAO = new RouteDAO();
         Route oldRoute = _entities.Routes.Find(idRoute);
         if (oldRoute.count <= 0)
         {
             return false;
         }
         else
         {
             oldRoute.count = oldRoute.count - 1;
             _entities.Tickets.Add(ticket);
             _entities.Entry(oldRoute).State = EntityState.Modified;
             _entities.SaveChanges();
         }
     }
     catch
     {
         return false;
     }
     return true;
 }
Beispiel #3
0
 // ================ ROUTE ==================
 // ROUTE's VIEW
 public ActionResult Route()
 {
     if (IsLoggedIn())
     {
         return(View(RouteDAO.GetRouteList()));
     }
     return(RedirectToAction("Index"));
 }
Beispiel #4
0
        //update
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string      routeID  = GridView1.DataKeys[e.RowIndex].Value.ToString();
            GridViewRow row      = GridView1.Rows[e.RowIndex];
            TextBox     duration = (TextBox)row.Cells[2].Controls[0];

            GridView1.EditIndex = -1;
            //update data
            RouteDAO.UpdateRoute(routeID, Convert.ToInt32(duration.Text));
            ShowDataRoute();
        }
Beispiel #5
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         DataTable dt = RouteDAO.GetDataRoute();
         ddlRoute.DataSource     = dt;
         ddlRoute.DataTextField  = "RouteID";
         ddlRoute.DataValueField = "Route";
         ddlRoute.DataBind();
         ddlRoute_SelectedIndexChanged(null, null);
     }
 }
Beispiel #6
0
 public ActionResult RouteEdit(Route updateR)
 {
     if (ModelState.IsValid)
     {
         var editResult = RouteDAO.UpdateRoute(updateR);
         if (editResult == "ok")
         {
             return(RedirectToAction("Route"));
         }
         ModelState.AddModelError("", editResult);
     }
     return(View());
 }
 // FLIGHT EDIT'S VIEW
 public ActionResult FlightEdit(string id)
 {
     if (IsLoggedIn())
     {
         var f = FlightDAO.GetFlight(id);
         if (f != null)
         {
             ViewBag.RouteData = RouteDAO.GetRouteList();
             return(View(f));
         }
     }
     return(RedirectToAction("Index"));
 }
        public ExecutionResult  GetPalletByProductType(string productType)
        {
            var exeResult = RouteDAO.GetPalletInfo(productType);

            if (exeResult.Status)
            {
                var ds = (DataSet)exeResult.Anything;

                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    string palletSize = ds.Tables[0].Rows[0]["PALLET_SIZE"].ToString();
                    exeResult.Anything = palletSize;
                }
            }
            return(exeResult);
        }
        public ExecutionResult GetProductType(string sn)
        {
            var exeResult = RouteDAO.GetProductTypeInfo(sn);

            if (exeResult.Status)
            {
                var ds = (DataSet)exeResult.Anything;

                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    string productType = ds.Tables[0].Rows[0]["PRODUCT_TYPE"].ToString();
                    exeResult.Anything = productType;
                }
            }
            return(exeResult);
        }
Beispiel #10
0
 public bool deleteTicket(int id)
 {
     RouteDAO routeDAO = new RouteDAO();
     Ticket ticket = selectTicket(id);
     try
     {
         Route oldRoute = _entities.Routes.Find(ticket.idRoute);
         oldRoute.count = oldRoute.count + 1;
         _entities.Entry(oldRoute).State = EntityState.Modified;
         _entities.Tickets.Remove(ticket);
         _entities.SaveChanges();
     }
     catch
     {
         return false;
     }
     return true;
 }
 public ActionResult FlightEdit(Flight updateF)
 {
     ModelState.Remove("AvailSeatsF");
     ModelState.Remove("AvailSeatsE");
     ModelState.Remove("AvailSeatsB");
     ModelState.Remove("FlightTime");
     if (ModelState.IsValid)
     {
         var editResult = FlightDAO.UpdateFlight(updateF);
         if (editResult == "ok")
         {
             return(RedirectToAction("Flight"));
         }
         ModelState.AddModelError("", editResult);
     }
     ViewBag.RouteData = RouteDAO.GetRouteList();
     return(View(updateF));
 }
Beispiel #12
0
        private void BtnSave_Click(object sender, EventArgs e)
        {
            SqlConnection conn = DAO.Connection;
            SqlCommand    cmd  = conn.CreateCommand();

            conn.Open();
            // create random and check BusID duplicate
            string routeID;

            do
            {
                cmd.Parameters.Clear();
                routeID         = DAO.RandomID();
                cmd.CommandText = "SELECT * FROM Routes WHERE RouteID = @id";
                cmd.Parameters.AddWithValue("@id", routeID);
                SqlDataReader reader = cmd.ExecuteReader();
                bool          exist  = reader.Read();
                reader.Close();
                if (!exist)
                {
                    break;
                }
            } while (true);
            Route route = new Route();

            route.RouteID    = routeID;
            route.FromCityID = cbFromCity.SelectedValue;
            route.ToCityID   = cbToCity.SelectedValue;
            int duration;

            if (int.TryParse(txtDuration.Text, out duration))
            {
                route.Duration = duration;
                RouteDAO.addRoute(route);
            }
            else
            {
                durationError.Controls.Add(new LiteralControl("<div class='alert alert-danger'>"));
                Label error = new Label();
                error.Text = "Duration must be number !";
                durationError.Controls.Add(error);
                durationError.Controls.Add(new LiteralControl("</div>"));
            }
        }
Beispiel #13
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         Bus       b  = (Bus)Session["bus"];
         DataTable dt = RouteDAO.GetDataRoute();
         //BusID
         DropDownList1.DataSource     = dt;
         DropDownList1.DataTextField  = "RouteID";
         DropDownList1.DataValueField = "Route";
         DropDownList1.DataBind();
         DropDownList1.Items.FindByText(b.RouteID).Selected = true;
         txtID.Text      = b.BusID;
         txtBusName.Text = b.BusName;
         txtFare.Text    = b.Fare.ToString();
         txtSeat.Text    = b.TotalSeat.ToString();
         DropDownList1_SelectedIndexChanged1(null, null);
     }
 }
Beispiel #14
0
        protected void ShowDataRoute()
        {
            DataTable dt = RouteDAO.GetDataRoute();

            if (dt.Rows.Count > 0)
            {
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
            else
            {
                dt.Rows.Add(dt.NewRow());
                GridView1.DataSource = dt;
                GridView1.DataBind();
                int columncount = GridView1.Rows[0].Cells.Count;
                GridView1.Rows[0].Cells.Clear();
                GridView1.Rows[0].Cells.Add(new TableCell());
                GridView1.Rows[0].Cells[0].ColumnSpan = columncount;
                GridView1.Rows[0].Cells[0].Text       = "No Records Found";
            }
        }
Beispiel #15
0
        //search route by id
        protected void SearchRoute(object sender, EventArgs e)
        {
            DataTable searchTBL = RouteDAO.GetDataRouteByID(txtSearch.Text.Trim());

            if (searchTBL.Rows.Count > 0)
            {
                GridView1.DataSource = searchTBL;
                GridView1.DataBind();
            }
            else
            {
                searchTBL.Rows.Add(searchTBL.NewRow());
                GridView1.DataSource = searchTBL;
                GridView1.DataBind();
                int columncount = GridView1.Rows[0].Cells.Count;
                GridView1.Rows[0].Cells.Clear();
                GridView1.Rows[0].Cells.Add(new TableCell());
                GridView1.Rows[0].Cells[0].ColumnSpan = columncount;
                GridView1.Rows[0].Cells[0].Text       = "No Records Found";
            }
        }
Beispiel #16
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public RouteBLL(LoggingSessionInfo pUserInfo)
 {
     this.CurrentUserInfo = pUserInfo;
     this._currentDAO     = new RouteDAO(pUserInfo);
 }
 public RouteManager(RouteDAO db)
 {
     _db = db;
 }
        public ActionResult FlightAdd(List <Flight> newFlights)
        {
            //init validation variables
            bool          invalid = false, invalid2 = false;
            int           total = newFlights.Count;
            List <string> added = new List <string>();

            ModelState.Remove("AvailSeatsF");
            ModelState.Remove("AvailSeatsE");
            ModelState.Remove("AvailSeatsB");
            ModelState.Remove("FlightTime");
            if (ModelState.IsValid)
            {
                foreach (var item in newFlights)
                {
                    //get aircraft of route
                    var route    = RouteDAO.GetRoute(item.RNo);
                    var aircraft = RouteDAO.GetAircraft(route.RAircraft);

                    //assign default seatnumbers
                    if (aircraft.FirstClassSeats != null)
                    {
                        item.AvailSeatsF = aircraft.FirstClassSeats;
                    }
                    if (aircraft.BussinessSeats != null)
                    {
                        item.AvailSeatsB = aircraft.BussinessSeats;
                    }
                    item.AvailSeatsE = aircraft.EconomySeats;
                    var diff = item.ArrivalTime.Hour - item.DepartureTime.Hour;
                    item.FlightTime = int.Parse(diff.ToString());
                    if (!FlightDAO.AddFlight(item))
                    {
                        ModelState.AddModelError("", string.Format("Could not add flight {0}", item.FNo));
                        invalid = true;
                        total--;
                    }
                    else
                    {
                        added.Add(string.Format("{0}", item.FNo));
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", "Please enter required fields");
                invalid2 = true;
            }
            if (!invalid && !invalid2)
            {
                return(RedirectToAction("Flight"));
            }

            if (added.Count > 0)
            {
                ModelState.AddModelError("", "Flights Added: ");
                foreach (var item in added)
                {
                    ModelState.AddModelError("", item);
                }
            }

            return(View());
        }
Beispiel #19
0
        public EditUI()
        {
            string msg = "";

            AddSection()
            .IsFramed()
            .WithTitle("Edit Route")
            .WithColumns(new List <Column>
            {
                new Column(
                    new List <IField> {
                    Map(x => x.Name)
                    .AsSectionField <TextBox>()
                    .WithLength(50).LabelTextIs("Name")
                    .Required().TextFormatIs("")
                    .TextFormatIs("^[ a-zA-Z0-9]+$"),
                    Map(x => x.BIN)
                    .AsSectionField <TextBox>()
                    .TextFormatIs(TextFormat.numeric)
                    .WithLength(6, 20).LabelTextIs("BIN").Required()
                    .TextFormatIs(TextFormat.numeric),
                    Map(x => x.Description)
                    .AsSectionField <TextBox>()
                    .WithLength(60)
                    .LabelTextIs("Description")
                    .Required()
                    .TextFormatIs("^[ a-zA-Z0-9]+$"),
                    Map(x => x.SinkNode).AsSectionField <DropDownList>()
                    .Of(() => { return(new SinkNodeDAO().Get().ToList()); })
                    .ListOf(x => x.Name, x => x.ID).WithEditableText()
                    .Required()
                    .LabelTextIs("Sink Node"),

                    Map(x => x.ID).AsSectionField <TextLabel>().ApplyMod <VisibilityMod>(m => m.Hide <Route>(h => { return(true); })),
                }),
            })
            .WithFields(new List <IField> {
                AddSectionButton()
                .SubmitTo(x =>
                {
                    try
                    {
                        RouteDAO routeDao = new RouteDAO();
                        Route route       = routeDao.GetById(x.ID);

                        //check for uniqueness
                        if (!routeDao.isUniqueName(route.Name, x.Name))
                        {
                            msg += "Route name must be unique";
                            return(false);
                        }
                        else if (!routeDao.isUniqueBIN(route.BIN, x.BIN))
                        {
                            msg += "PAN must be unique";
                            return(false);
                        }

                        route.Name         = x.Name;
                        route.BIN          = x.BIN;
                        route.Description  = x.Description;
                        route.SinkNode     = x.SinkNode;
                        route.DateModified = DateTime.Now;

                        routeDao.Update(route);
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        msg          += "An error occured";
                        string logMsg = "Message= " + ex.Message + " Inner Exception= " + ex.InnerException;
                        MessageLogger.LogError(logMsg);
                        return(false);
                    }
                })
                .ConfirmWith(s => String.Format("Update Route type {0} ", s.Name)).WithText("Update")
                .OnSuccessDisplay(s => String.Format("Route \"{0}\" has been successfuly editted ", s.Name))
                .OnFailureDisplay(s => String.Format("Error editting!\n   {0} ", msg))
            });
        }
Beispiel #20
0
        public AddUI()
        {
            string msg = "";

            WithTitle("Add new Route");

            Map(x => x.Name).As <TextBox>()
            .WithLength(35)
            .LabelTextIs("Route Name")
            .Required()
            .TextFormatIs("^[ a-zA-Z0-9]+$");

            Map(x => x.BIN).As <TextBox>()
            .WithLength(6, 20)
            .LabelTextIs("BIN")
            .Required()
            .TextFormatIs(TextFormat.numeric);

            Map(x => x.Description).As <TextBox>()
            .WithLength(50)
            .LabelTextIs("Description")
            .Required()
            .TextFormatIs("^[ a-zA-Z0-9]+$");

            Map(x => x.SinkNode).As <DropDownList>()
            .Of(() => { return(new SinkNodeDAO().Get().ToList()); })
            .ListOf(x => x.Name, x => x.ID).WithEditableText()
            .Required()
            .LabelTextIs("Sink Node");



            AddButton()
            .ApplyMod <IconMod>(x => x.WithIcon(Ext.Net.Icon.Disk))
            .WithText("Submit")
            .SubmitTo(x =>
            {
                try
                {
                    Route route       = new Route();
                    RouteDAO routeDao = new RouteDAO();
                    if (!routeDao.isUniqueName(x.Name))
                    {
                        msg += "Route name must be unique";
                        return(false);
                    }
                    else if (!routeDao.isUniqueBIN(x.BIN))
                    {
                        msg += "PAN must be unique";
                        return(false);
                    }
                    else
                    {
                        route.Name         = x.Name;
                        route.BIN          = x.BIN;
                        route.SinkNode     = x.SinkNode;
                        route.Description  = x.Description;
                        route.DateCreated  = DateTime.Now;
                        route.DateModified = DateTime.Now;

                        routeDao.Insert(route);
                        return(true);    //Success
                    }
                }
                catch (Exception ex)
                {
                    msg          += "An error occured";
                    string logMsg = "Message= " + ex.Message + " Inner Exception= " + ex.InnerException;
                    MessageLogger.LogError(logMsg);
                    return(false);
                }
            })
            .OnSuccessDisplay(x =>
            {
                return("Route" + "" + x.Name + " saved successfully.");
            })
            .OnFailureDisplay(s => String.Format("Error: {0} ", msg))
            .CssClassIs("btn btn-default");
        }
 public RouteManager()
 {
     _db = new RouteDAO();
 }
Beispiel #22
0
        public static Iso8583Message ProcessIncommingMessage(int sourceId, Iso8583Message originalMessage)
        {
            SourceNode sourceNode = new SourceNodeDAO().GetById(sourceId);

            //Configure Original Data Element
            DateTime transmissionDate = DateTime.UtcNow;

            //Configuring the original data element (intended for transaction matching (e.g. to identify a transaction for correction or reversal)
            //consists of 5 data elements: MTI (1-4), STAN (5-10), Date&Time (11-20), AcquirerInsttutionCode (21-31), ForwardingInstCode(32-42)
            string transactionDate = string.Format("{0}{1}",
                                                   string.Format("{0:00}{1:00}", transmissionDate.Month, transmissionDate.Day),
                                                   string.Format("{0:00}{1:00}{2:00}", transmissionDate.Hour,
                                                                 transmissionDate.Minute, transmissionDate.Second));

            //string originalDataElement = $"{originalMessage.MessageTypeIdentifier}{originalMessage.Fields[11]}{transactionDate}";
            string originalDataElement = originalMessage.MessageTypeIdentifier.ToString() + originalMessage.Fields[11] + transactionDate;

            //if the originalDataElement is empty (for non-reversal), add it
            if (!(originalMessage.Fields.Contains(MessageField.ORIGINAL_DATA_ELEMENT_FIELD)))
            {
                originalMessage.Fields.Add(MessageField.ORIGINAL_DATA_ELEMENT_FIELD, originalDataElement);
            }
            MessageLogger.LogMessage("Validating message...");

            //check if it's a reversal message
            if (originalMessage.MessageTypeIdentifier == MTI.REVERSAL_ADVICE || originalMessage.MessageTypeIdentifier == MTI.REPEAT_REVERSAL_ADVICE)
            {
                MessageLogger.LogMessage("\nReversal message!");
                //confirm that this transaction actually needs to be reversed
                bool           isReversal;
                Iso8583Message reversalMessage = GetReversalMessage(originalMessage, out isReversal);

                if (!isReversal)
                {
                    MessageLogger.LogMessage("Invalid Reversal transaction");
                    return(reversalMessage);
                }
                //continue if it's a reversal message
                originalMessage = reversalMessage;
            }

            string         cardPan          = originalMessage.Fields[MessageField.CARD_PAN_FIELD].ToString();
            decimal        amount           = Convert.ToDecimal(originalMessage[MessageField.AMOUNT_FIELD].Value);                          //The amount is in kobo
            string         channelCode      = originalMessage.Fields[MessageField.CHANNEL_ID_FIELD].Value.ToString().Substring(0, 2);
            string         tTypeCode        = originalMessage.Fields[MessageField.TRANSACTION_TYPE_FIELD].Value.ToString().Substring(0, 2); //first two positions for the transaction type
            string         expiryDate       = originalMessage.Fields[MessageField.EXPIRY_DATE_FIELD].Value.ToString();
            DateTime       expiryDateOfCard = ConvertToDateTime(expiryDate);
            Iso8583Message responseMessage;       //rsponse message to return after performing some checks

            if (expiryDateOfCard <= DateTime.Now) //card expired
            {
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.EXPIRED_CARD.ToString());
                MessageLogger.LogMessage("Expired card");
                return(responseMessage);
            }
            //check the amount, only for balance enq should the amount be zero
            if (amount <= 0 && tTypeCode != TransactionTypeCode.BALANCE_ENQUIRY.ToString())
            {
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.INVALID_AMOUNT.ToString());         //Invalid amount
                MessageLogger.LogMessage("Invalid Amount");
                return(responseMessage);
            }

            Combo  theCombo          = null;
            Scheme theScheme         = null;
            var    sourceNodeSchemes = sourceNode.Schemes;
            string pan   = originalMessage.Fields[MessageField.CARD_PAN_FIELD].Value.ToString();
            var    route = new RouteDAO().GetByCardBIN(pan.Substring(0, 6));

            if (route == null)
            {
                MessageLogger.LogMessage("Route is null.");
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.ROUTING_ERROR.ToString());
                return(responseMessage);
            }

            //get the sourcenode by the route
            theScheme = sourceNodeSchemes.Where(s => s.Route.ID == route.ID).FirstOrDefault();
            if (theScheme == null)
            {
                MessageLogger.LogMessage("No such secheme");
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.TRANSACTION_NOT_PERMITTED_ON_TERMINAL.ToString());
                return(responseMessage);
            }
            theCombo = theScheme.Combos.Where(c => c.TransactionType.Code.Equals(tTypeCode) && c.Channel.Code.Equals(channelCode)).FirstOrDefault();
            if (theCombo == null)   //of course, scheme also = null
            {
                MessageLogger.LogMessage("Invalid transaction type-channel-fee combo");
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.TRANSACTION_NOT_PERMITTED_ON_TERMINAL.ToString()); // Transaction not allowed on terminal
                return(responseMessage);
            }

            var sinkNnode = route.SinkNode;

            if (sinkNnode == null)
            {
                MessageLogger.LogMessage("Sink node is null.");
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.ISSUER_OR_SWITCH_INOPERATIVE.ToString());
                return(responseMessage);
            }

            //At this point, everything is assumed to be okay
            Fee fee = theCombo.Fee;

            if (fee == null)
            {
                MessageLogger.LogMessage("Unacceptable transaction fee");
                responseMessage = SetReponseMessage(originalMessage, ResponseCode.UNACCEPTABLE_TRANSACTION_FEE.ToString());  // Transaction type not allowed in this scheme
                return(responseMessage);
            }

            //calculate the transaction fee and embed in the  message
            originalMessage = SetTransactionFee(originalMessage, ComputeFee(fee, amount));


            var clientPeer = Program.ClientPeers.Where(p => p.Name.Equals(theScheme.Route.SinkNode.ID.ToString())).FirstOrDefault();

            if (clientPeer == null)
            {
                MessageLogger.LogMessage("Clientpeer is null");
                originalMessage = SetReponseMessage(originalMessage, ResponseCode.ISSUER_OR_SWITCH_INOPERATIVE.ToString());
                return(originalMessage);
            }
            ////////
            Iso8583Message replyFromFEP = SendMessageToFEP(clientPeer, originalMessage);        //sends message to the client

            return(replyFromFEP);
        }
Beispiel #23
0
 // ROUTE EDIT'S VIEW
 public ActionResult RouteEdit(int id) => IsLoggedIn() && RouteDAO.GetRoute(id) != null?View(RouteDAO.GetRoute(id)) : (ActionResult)RedirectToAction("Index");
Beispiel #24
0
        //===Get aircraft range for route adding===
        public int GetAircraftRange(string id)
        {
            var a = RouteDAO.GetAircraft(id);

            return(a.Range);
        }
Beispiel #25
0
 // ROUTE DELETE's PROCESS
 public ActionResult RouteDelete(int id) => IsLoggedIn() && RouteDAO.DeleteRoute(id) ? Content("OK") : Content("Error");
Beispiel #26
0
        public ActionResult RouteAdd(List <Route> newRoutes)
        {
            //init variables for validation purposes
            bool          invalid = false, invalid2 = false;
            List <Route>  routeToSkip = new List <Route>();
            int           total       = newRoutes.Count;
            List <string> added       = new List <string>();

            //check list for any invalid routes (if departure = destination)
            foreach (var item in newRoutes)
            {
                if (item.Departure == item.Destination)
                {
                    ModelState.AddModelError("", string.Format("Error at: {0} with plane {1}. Arrival must be different than Departure", item.RAirline, item.RAircraft));
                    invalid2 = true;
                    //assign route as invalid
                    routeToSkip.Add(item);
                }
            }
            if (ModelState.IsValid || invalid == false)
            {
                bool skip = false;
                foreach (var item in newRoutes)
                {
                    foreach (var itemToSkip in routeToSkip)
                    {
                        if (item.Equals(itemToSkip))
                        {
                            skip = true;
                        }
                    }

                    //skip if item in original list equals to any in designated invalid routes, reset skip check
                    if (skip)
                    {
                        skip = false; continue;
                    }

                    //perform add procedure. If route is invalid, add feedback message as validation error,
                    if (!RouteDAO.AddRoute(item))
                    {
                        ModelState.AddModelError("", string.Format("Could not add {0} with plane {1} going from {2} to {3}", item.RAirline, item.RAircraft, item.Departure, item.Destination));
                        invalid = true;
                        total--;
                    }
                    //else add to success strings to display in case invalid validation occurs
                    else
                    {
                        added.Add(string.Format("{0}({1}) : {2} - {3}", item.RAirline, item.RAircraft, item.Departure, item.Destination));
                    }
                }

                //if everything is inserted successfully, return to list
                if (!invalid && !invalid2)
                {
                    return(RedirectToAction("Route"));
                }

                //if there were errors, resets page and notify any inserted routes
                if (added.Count > 0)
                {
                    ModelState.AddModelError("", "Routes Added: ");
                    foreach (var item in added)
                    {
                        ModelState.AddModelError("", item);
                    }
                }
            }
            return(View());
        }
Beispiel #27
0
 public RouteBLL()
 {
     dao = new RouteDAO();
 }
Beispiel #28
0
        public override ExecutionResult Check(object dataParam)
        {
            _exeResult = (ExecutionResult)dataParam;
            try
            {
                string sn           = _exeResult.Sn;
                string stationName  = _exeResult.StationName;
                bool   mode         = _exeResult.IsAlive;
                string cproductType = _exeResult.ProductType;
                if (sn == "")
                {
                    _exeResult.Status  = false;
                    _exeResult.Message = "管号为空!";
                    return(_exeResult);
                }
                if (stationName == "")
                {
                    _exeResult.Status  = false;
                    _exeResult.Message = "站点名为空!";
                    return(_exeResult);
                }

                _exeResult = _routeController.CheckSn(stationName, sn, mode);
                if (_exeResult.Status)
                {
                    #region 查询x射线工位不良描述
                    if (ErrorCodeHelper.ErrorCodeDic.Count <= 0 || ErrorCodeHelper.DescAddrDic.Count <= 0)
                    {
                        _exeResult = ErrorCodeHelper.GetErrorCodeInfo("X射线工位");
                    }
                    if (!_exeResult.Status)
                    {
                        return(_exeResult);
                    }
                    #endregion

                    #region 查询是否墩粗、喷漆
                    string isUpsetting     = "False";
                    string isSprayPainting = "False";
                    string isXray          = "True";
                    string isFirstVacuum   = "True";
                    if (_exeResult.Status)
                    {
                        _exeResult = RouteDAO.GetRouteInfo(sn);
                        DataSet ds = _exeResult.Anything as DataSet;
                        if (ds != null && ds.Tables[0].Rows.Count > 0)
                        {
                            foreach (DataRow dr in ds.Tables[0].Rows)
                            {
                                string name = dr["STATION_NAME"].ToString();
                                if (name == "喷漆")
                                {
                                    isSprayPainting = "True";
                                }
                                if (name == "墩粗")
                                {
                                    isUpsetting = "True";
                                }
                                if (name == "第一次真空度测试")
                                {
                                    isFirstVacuum = "False";
                                }
                                if (name == "X射线工位")
                                {
                                    isXray = "False";
                                }
                            }
                        }
                        if (!_exeResult.Status)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "未找到管号:" + sn + "对应的流程!";
                            return(_exeResult);
                        }
                    }
                    #endregion

                    #region 查询管型编号
                    string productSerial = "";

                    if (_exeResult.Status)
                    {
                        _exeResult = _routeController.GetProductSerial(sn);

                        if (_exeResult.Status)
                        {
                            productSerial = (string)_exeResult.Anything;
                        }
                        if (!_exeResult.Status)
                        {
                            return(_exeResult);
                        }
                    }

                    #endregion

                    #region 查询管型
                    string productType = "";
                    if (_exeResult.Status)
                    {
                        _exeResult = _routeController.GetProductType(sn);
                        if (_exeResult.Status)
                        {
                            productType = (string)_exeResult.Anything;
                            if (productType != cproductType)
                            {
                                _exeResult.Message = "产线管型:" + cproductType + "与上线维护管型:" + productType + "不一致";
                                _exeResult.Status  = false;
                                return(_exeResult);
                            }
                        }
                        if (!_exeResult.Status)
                        {
                            return(_exeResult);
                        }
                    }
                    #endregion

                    #region 查询托盘大小

                    string pallet = "";
                    if (_exeResult.Status)
                    {
                        _exeResult = _routeController.GetPalletByProductType(productType);
                        if (_exeResult.Status)
                        {
                            pallet = (string)_exeResult.Anything;
                            if (pallet == "1")
                            {
                                pallet = "True";
                            }
                            else
                            {
                                pallet = "False";
                            }
                        }
                        if (!_exeResult.Status)
                        {
                            return(_exeResult);
                        }
                    }
                    #endregion

                    if (KepController.KepHelper != null && KepController.KepHelper.State)
                    {   //给pLC发送管型、管号、管型编号、是否墩粗、是否喷漆
                        var autorun = (KepController.KepHelper.Read(AutoRun) ?? "").ToString();
                        if (autorun == "False")
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "线体不在自动运行模式,无法扫描录入!";
                            return(_exeResult);
                        }

                        var badMode = (KepController.KepHelper.Read(BadMode) ?? "").ToString();
                        if (badMode == "True")
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "线体在废品上线模式,无法扫描录入!";
                            return(_exeResult);
                        }
                        var productSerialIsOk = (KepController.KepHelper.Read(ProductSerial) ?? "").ToString();

                        if (productSerialIsOk == productSerial)
                        {
                            var palletisok = (KepController.KepHelper.Read(Pallet) ?? "").ToString();
                            if (palletisok == "True")
                            {
                                int scanCount = int.Parse(KepController.KepHelper.Read(ScanCount).ToString());
                                if (scanCount >= 12)
                                {
                                    _exeResult.Status  = false;
                                    _exeResult.Message = "大托盘已装满" + scanCount + "支,无法再次扫描录入!";
                                    return(_exeResult);
                                }
                            }
                            if (palletisok == "False")
                            {
                                int scanCount = int.Parse(KepController.KepHelper.Read(ScanCount).ToString());
                                if (scanCount >= 24)
                                {
                                    _exeResult.Status  = false;
                                    _exeResult.Message = "小托盘已装满" + scanCount + "支,无法再次扫描录入!";
                                    return(_exeResult);
                                }
                            }
                        }
                        if (productSerialIsOk != productSerial)
                        {
                            int scanCount = int.Parse(KepController.KepHelper.Read(ScanCount).ToString());
                            if (scanCount != 0)
                            {
                                _exeResult.Status  = false;
                                _exeResult.Message = "一个托盘内不允许放不同管型!";
                                return(_exeResult);
                            }
                        }

                        KepController.KepHelper.Write(ProductSerial, productSerial);
                        KepController.KepHelper.Write(ProductType, productType);
                        KepController.KepHelper.Write(Pallet, pallet);
                        KepController.KepHelper.Write(IsSprayPainting, isSprayPainting);
                        KepController.KepHelper.Write(IsUpsetting, isUpsetting);
                        KepController.KepHelper.Write(IsFirstVacuum, isFirstVacuum);
                        KepController.KepHelper.Write(IsXray, isXray);
                        //给PLC发送不良信息描述
                        foreach (var key in ErrorCodeHelper.ErrorCodeDic.Keys)
                        {
                            string wkey = ErrorCodeHelper.DescAddrDic[key];
                            // string wval = ErrorCodeHelper.ErrorCodekeyDic[key];
                            string wval = key.Substring(key.LastIndexOf('-') + 1);
                            KepController.KepHelper.Write(wkey, wval);
                        }
                        KepController.KepHelper.Write(ErrorCodeDescCount, ErrorCodeHelper.ErrorCodeDic.Count);
                        #region 判断发送PLC值是否正确
                        var productSerialok = (KepController.KepHelper.Read(ProductSerial) ?? "").ToString();
                        if (productSerial != productSerialok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送管型序号失败!";
                            return(_exeResult);
                        }
                        var productTypeok = (KepController.KepHelper.Read(ProductType) ?? "").ToString();
                        if (productType != productTypeok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送管型失败!";
                            return(_exeResult);
                        }
                        var palletok = (KepController.KepHelper.Read(Pallet) ?? "").ToString();
                        if (pallet != palletok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送托盘类型失败!";
                            return(_exeResult);
                        }
                        var isSprayPaintingok = (KepController.KepHelper.Read(IsSprayPainting) ?? "").ToString();
                        if (isSprayPainting != isSprayPaintingok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送是否喷漆失败!";
                            return(_exeResult);
                        }

                        var isUpsettingok = (KepController.KepHelper.Read(IsUpsetting) ?? "").ToString();
                        if (isUpsetting != isUpsettingok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送是否墩粗失败!";
                            return(_exeResult);
                        }

                        var isFirstVacuumok = (KepController.KepHelper.Read(IsFirstVacuum) ?? "").ToString();
                        if (isFirstVacuum != isFirstVacuumok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送是否第一次真空度失败!";
                            return(_exeResult);
                        }

                        var isXrayok = (KepController.KepHelper.Read(IsXray) ?? "").ToString();
                        if (isXray != isXrayok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送是否x射线失败!";
                            return(_exeResult);
                        }

                        var errorCodeDescCountok = (KepController.KepHelper.Read(ErrorCodeDescCount) ?? "").ToString();
                        if (ErrorCodeHelper.ErrorCodeDic.Count.ToString() != errorCodeDescCountok)
                        {
                            _exeResult.Status  = false;
                            _exeResult.Message = "发送不良描述总数失败!";
                            return(_exeResult);
                        }
                        #endregion


                        if (_exeResult.Status)
                        {
                            _exeResult = _updateStationController.InsertSnToQulity(sn, isSprayPainting, isUpsetting);
                        }
                        if (_exeResult.Status)
                        {
                            _exeResult = _updateStationController.UpdateStationInfo(sn, stationName, "0");
                        }


                        KepController.KepHelper.Write(ScanFinish, 1);
                        if (_exeResult.Status)
                        {
                            _exeResult.Message = "管号:" + sn + "过站成功!";
                        }
                    }
                    else
                    {
                        _exeResult.Status  = false;
                        _exeResult.Message = "未连接KEP服务器!";
                        return(_exeResult);
                    }
                }
            }
            catch (Exception e)
            {
                _exeResult.Status  = false;
                _exeResult.Message = e.Message;
            }
            return(_exeResult);
        }