public static string ViewString(this Willness type) { string result = ""; switch (type) { case Willness.Voluntary: result = "Да"; break; case Willness.NotVoluntary: result = "Не"; break; } return(result); }
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)); }