Exemplo n.º 1
0
 /// <summary>
 /// Removes an airline object from list
 /// </summary>
 /// <param name="airlineObject">Airline object you need to remove</param>
 /// <returns>Positive if removed</returns>
 public virtual bool Delete(AirlineObject airlineObject)
 {
     try
     {
         var prevCount         = AirlineObjects.Count();
         var tmpAirlineObjects = AirlineObjects.Where(arg => arg != null && arg.ID != airlineObject.ID).ToArray();
         Array.Resize(ref tmpAirlineObjects, prevCount);
         AirlineObjects = tmpAirlineObjects;
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Adds the airline object to array
        /// </summary>
        /// <param name="FieldsValues">Airline object's fields and their values</param>
        /// <param name="airlineObject">New Airline object for a collection</param>
        /// <param name="airlineObjects">New Airline object's list for a main object if it's a manager</param>
        /// <returns>Positive if added</returns>
        public virtual bool Add(string[] FieldsValues, AirlineObject airlineObject, AirlineObject[] airlineObjects)
        {
            var FieldsValuesUpdate = GetAirlineObjectInfo(FieldsValues);
            var index = AirlineObjects.Count(arg => arg != null);

            if (index > -1)
            {
                if (index >= AirlineObjects.Length)
                {
                    if (CanBeResized())
                    {
                        var tmpAirlineObjects = AirlineObjects;
                        Array.Resize(ref tmpAirlineObjects, AirlineObjects.Length * 2);
                        AirlineObjects = tmpAirlineObjects;
                    }
                    else
                    {
                        OnDisplayInfoChanged(new AirlineObjectEventArgs {
                            HasError = true, ConsoleColor = ConsoleColor.Red, DisplayInfo = "Can't add an object, max size reached"
                        });
                        return(false);
                    }
                }

                try
                {
                    foreach (string[] fieldsValues in FieldsValuesUpdate)
                    {
                        if (fieldsValues[fieldNameIndex] == "Count")
                        {
                            var airlineManager = airlineObject as AirlineManager;
                            if (airlineManager != null)
                            {
                                int airlineObjectsCount = 0;
                                if (int.TryParse(fieldsValues[fieldValueIndex], out airlineObjectsCount))
                                {
                                    Array.Resize(ref airlineObjects, airlineObjectsCount);
                                }
                                airlineManager.AirlineObjects = airlineObjects;
                            }
                            continue;
                        }
                        if (Properties.Contains(fieldsValues[fieldNameIndex]))
                        {
                            var originalAirlineObject = airlineObject;
                            var isAlreadyProcessed    = false;
secondChance:
                            try
                            {
                                if (airlineObject[fieldsValues[fieldNameIndex]].GetType().IsEnum)
                                {
                                    try
                                    {
                                        var enumType   = airlineObject[fieldsValues[fieldNameIndex]].GetType();
                                        var enumString = char.ToUpper(fieldsValues[fieldValueIndex][0]) + fieldsValues[fieldValueIndex].Substring(1).ToLower();
                                        airlineObject[fieldsValues[fieldNameIndex]] = Enum.Parse(enumType, enumString);
                                    }
                                    catch { }
                                }
                                else
                                {
                                    switch (Type.GetTypeCode(airlineObject[fieldsValues[fieldNameIndex]].GetType()))
                                    {
                                    case TypeCode.Int32:
                                        try
                                        {
                                            airlineObject[fieldsValues[fieldNameIndex]] = Convert.ToInt32(fieldsValues[fieldValueIndex]);
                                        }
                                        catch { }
                                        break;

                                    case TypeCode.Decimal:
                                        try
                                        {
                                            airlineObject[fieldsValues[fieldNameIndex]] = Convert.ToDecimal(fieldsValues[fieldValueIndex]);
                                        }
                                        catch { }
                                        break;

                                    case TypeCode.String:
                                        try
                                        {
                                            airlineObject[fieldsValues[fieldNameIndex]] = fieldsValues[fieldValueIndex];
                                        }
                                        catch { }
                                        break;

                                    case TypeCode.DateTime:
                                        try
                                        {
                                            airlineObject[fieldsValues[fieldNameIndex]] = Convert.ToDateTime(fieldsValues[fieldValueIndex]);
                                        }
                                        catch { }
                                        break;
                                    }
                                }
                            }
                            catch
                            {
                                if (!isAlreadyProcessed)
                                {
                                    isAlreadyProcessed = true;
                                    var passanger = airlineObject as Passenger;
                                    if (passanger != null)
                                    {
                                        airlineObject = passanger.Ticket;
                                        goto secondChance;
                                    }
                                }
                            }
                            airlineObject = originalAirlineObject;
                        }
                    }

                    if (airlineObject.IsValid())
                    {
                        AirlineObjects[index] = airlineObject;
                        return(true);
                    }
                }
                catch (Exception ex) { }
            }
            return(false);
        }