Example #1
0
        public static string ViewString(this Willness type)
        {
            string result = "";

            switch (type)
            {
            case Willness.Voluntary:
                result = "Да";
                break;

            case Willness.NotVoluntary:
                result = "Не";
                break;
            }

            return(result);
        }
Example #2
0
        public ActionResult IssueData()
        {
            Guid                  ClaimId               = Guid.Parse(Request.Form["ClaimID"]);
            ProblemType           Type                  = (ProblemType)(int.Parse(Request.Form["Type"] ?? "-1"));
            Reason                Reason                = (Reason)(int.Parse(Request.Form["Reason"] ?? "-1"));
            DelayDelay            DelayDelay            = (DelayDelay)(int.Parse(Request.Form["DelayDelay"] ?? "-1"));
            CancelAnnonsment      CancelAnnonsment      = (CancelAnnonsment)(int.Parse(Request.Form["CancelAnnonsment"] ?? "-1"));
            CancelOverbokingDelay CancelOverbokingDelay = (CancelOverbokingDelay)(int.Parse(Request.Form["CancelOverbokingDelay"] ?? "-1"));
            DenayArival           DenayArival           = (DenayArival)(int.Parse(Request.Form["DenayArival"] ?? "-1"));
            DocumentSecurity      DocumentSecurity      = (DocumentSecurity)(int.Parse(Request.Form["DocumentSecurity"] ?? "-1"));
            Willness              Willness              = (Willness)(int.Parse(Request.Form["Willness"] ?? "-1"));

            Claim claim = null;

            using (AirHelpDBContext dc = new AirHelpDBContext())
            {
                claim = dc.Claims.Include("AirPorts").Where(c => c.ClaimId == ClaimId).SingleOrDefault();

                var isEUFlight = claim.IsEUFlight;
                var flightType = claim.FlightType;

                claim.Type                  = Type;
                claim.Reason                = Reason;
                claim.DelayDelay            = DelayDelay;
                claim.CancelAnnonsment      = CancelAnnonsment;
                claim.CancelOverbokingDelay = CancelOverbokingDelay;
                claim.DenayArival           = DenayArival;
                claim.DocumentSecurity      = DocumentSecurity;
                claim.Willness              = Willness;

                // reject by not in EU
                if (flightType == FlightType.NotSupported)
                {
                    RelectClaim model = new RelectClaim()
                    {
                        Reason = "Полета е изцяло извън рамките на Европейският съюз. Регламент 261/2004 не покрива полети извън EU"
                    };
                    return(View("RejectClaim", model));
                }

                // Reject by reason
                if (Reason == Reason.Strike || Reason == Reason.BadWeather)
                {
                    RelectClaim model = new RelectClaim()
                    {
                        Reason = "Причини за проблем с полета \"Стачка\" или \"Лошо време\" се водят форсмажорни обстоятрлства. " +
                                 "Авиокомпанията не дължи обезщетение по регламент 261/2004"
                    };
                    return(View("RejectClaim", model));
                }

                if (Type == ProblemType.Delay)
                {
                    // Reject less than 2 hours
                    if (flightType == FlightType.F1500 && DelayDelay < DelayDelay.Beetwen2_3)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "Закъснението на полети до 1500 км трябва да е повече от 2 часа."
                        };
                        return(View("RejectClaim", model));
                    }
                    // Reject less than 3 hours
                    if (flightType > FlightType.F1500 && DelayDelay < DelayDelay.Beetwen3_4)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "Закъснението на полети над 1500 км трябва да е повече от 3 часа."
                        };
                        return(View("RejectClaim", model));
                    }
                    if (flightType == FlightType.F1500 && DelayDelay > DelayDelay.Beetwen0_2)
                    {
                        claim.CompensationAmount = 250;
                        claim.CompensationReason = "Закъснение с повече от 2 часа за полет с дистанция до 1500 км.";
                    }
                    else if (flightType == FlightType.FTo3500)
                    {
                        claim.CompensationAmount = 400;
                        claim.CompensationReason = "Закъснял полет с дистанция до 3500 км или в ранмите на EU";
                    }
                    else if (flightType == FlightType.FmoreThen3500 && DelayDelay == DelayDelay.Beetwen3_4)
                    {
                        claim.CompensationAmount = 300;
                        claim.CompensationReason = "Закъснял полет с дистанция над 3500 км. Ако полета заъснее с повече от 3 и по-малко от 4 часа, обезщетението се намалява с 50 %";
                    }
                    else
                    {
                        claim.CompensationAmount = 600;
                        claim.CompensationReason = "Закъснял полет с дистанция над 3500 км със закъснение над 4 часа.";
                    }
                }

                if (Type == ProblemType.Cancel)
                {
                    if (CancelAnnonsment == CancelAnnonsment.MoreThan14)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "Авиокомпанията не дължи обезщетение при опоестяване 2 седмици преди отмяната на полета."
                        };
                        return(View("RejectClaim", model));
                    }

                    if (CancelAnnonsment == CancelAnnonsment.Beetwen7_14 && CancelOverbokingDelay < CancelOverbokingDelay.MoreThan4)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "При отмяна на полета с оповестяване на отмяната повече от 7 дни преди полета е нужно закъснение от поне 4 часа."
                        };
                        return(View("RejectClaim", model));
                    }

                    if (CancelAnnonsment == CancelAnnonsment.LessThat7 && CancelOverbokingDelay < CancelOverbokingDelay.Beetwen2_3)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "При отмяна на полета с оповестяване на отмяната по-малко от 7 дни преди полета е нужно закъснение от поне 2 часа."
                        };
                        return(View("RejectClaim", model));
                    }

                    // cut off compensation
                    if (flightType == FlightType.F1500 && CancelOverbokingDelay == CancelOverbokingDelay.Beetwen0_2)
                    {
                        claim.CompensationAmount = 125;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "до 1500 км и премаршрутизиране със закъснение до 2 ч. имат 50 % намеление на обезщетението.";
                    }

                    else if (flightType == FlightType.FTo3500 && CancelOverbokingDelay <= CancelOverbokingDelay.Beetwen2_3)
                    {
                        claim.CompensationAmount = 200;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "до 3500 км и премаршрутизиране със закъснение до 3 ч. имат 50 % намеление на обезщетението.";
                    }
                    else if (flightType == FlightType.FmoreThen3500 && CancelOverbokingDelay <= CancelOverbokingDelay.Beetwen3_4)
                    {
                        claim.CompensationAmount = 300;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "над 3500 км и премаршрутизиране със закъснение до 4 ч. имат 50 % намеление на обезщетението.";
                    }
                    else if (flightType == FlightType.F1500)
                    {
                        claim.CompensationAmount = 250;
                        claim.CompensationReason = "Отменен полет до 1500 км";
                    }
                    else if (flightType == FlightType.FTo3500)
                    {
                        claim.CompensationAmount = 400;
                        claim.CompensationReason = "Отменен полет до 3500 км";
                    }
                    else if (flightType == FlightType.FmoreThen3500)
                    {
                        claim.CompensationAmount = 600;
                        claim.CompensationReason = "Отменен полет над 3500 км";
                    }
                }
                if (Type == ProblemType.Overbooking)
                {
                    if (DenayArival == DenayArival.After30)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "Причина за отказа е неявяване на чек-ина 30 мин преди полета."
                        };
                        return(View("RejectClaim", model));
                    }

                    if (DocumentSecurity == DocumentSecurity.MyFault)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "При проблем със документите нямате право на обезщетение."
                        };
                        return(View("RejectClaim", model));
                    }
                    if (Willness == Willness.Voluntary)
                    {
                        RelectClaim model = new RelectClaim()
                        {
                            Reason = "При доброволно педосъпване място си, нямате право на обезщетение по член 7 от регламент 261/2004."
                        };
                        return(View("RejectClaim", model));
                    }
                    // cut off compensation
                    if (flightType == FlightType.F1500 && CancelOverbokingDelay == CancelOverbokingDelay.Beetwen0_2)
                    {
                        claim.CompensationAmount = 125;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "до 1500 км и премаршрутизиране със закъснение до 2 ч. имат 50 % намеление на обезщетението.";
                    }

                    else if (flightType == FlightType.FTo3500 && CancelOverbokingDelay <= CancelOverbokingDelay.Beetwen2_3)
                    {
                        claim.CompensationAmount = 200;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "до 3500 км и премаршрутизиране със закъснение до 3 ч. имат 50 % намеление на обезщетението.";
                    }
                    else if (flightType == FlightType.FmoreThen3500 && CancelOverbokingDelay <= CancelOverbokingDelay.Beetwen3_4)
                    {
                        claim.CompensationAmount = 300;
                        claim.CompensationReason = "Отмяна на полета или откзан достъп до борда за полет " +
                                                   "над 3500 км и премаршрутизиране със закъснение до 4 ч. имат 50 % намеление на обезщетението.";
                    }
                    else if (flightType == FlightType.F1500)
                    {
                        claim.CompensationAmount = 250;
                        claim.CompensationReason = "Отменен полет до 1500 км";
                    }
                    else if (flightType == FlightType.FTo3500)
                    {
                        claim.CompensationAmount = 400;
                        claim.CompensationReason = "Отменен полет до 3500 км";
                    }
                    else if (flightType == FlightType.FmoreThen3500)
                    {
                        claim.CompensationAmount = 600;
                        claim.CompensationReason = "Отменен полет над 3500 км";
                    }
                }

                dc.SaveChanges();
            }

            return(View("CalculatorResult", claim));
        }