protected void LoadMethod(object obj) { try { if (SelectedScheme != null) { Scheme = new MembershipScheme() { SchemeId = SelectedScheme.SchemeId, SchemeName = SelectedScheme.SchemeName, ValidOnHolidays = SelectedScheme.ValidOnHolidays, ValidOnWeekends = SelectedScheme.ValidOnWeekends, ValidHours = SelectedScheme.ValidHours, Limit = SelectedScheme.Limit, Discount = SelectedScheme.Discount, ValidityPeriod = SelectedScheme.ValidityPeriod }; SetAction(ButtonAction.Selected); } } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } MessageBox.Show(ex.Message, MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Error); } }
protected void UndoMethod(object obj) { try { SelectedScheme = null; Scheme = new MembershipScheme(); SetAction(ButtonAction.Init); } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } MessageBox.Show(ex.Message, MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Error); } }
List <dynamic> GetTimeSpentInEachSession(TimeSpan InTime, TimeSpan OutTime, MembershipScheme scheme, ParkingIn PIN) { DateTime Start = PIN.InDate; DateTime End = PIN.InDate; TimeSpan Minute = new TimeSpan(0, 1, 0); List <dynamic> TimeSpentInEachSession = new List <dynamic>(); foreach (var session in scheme.ValidHoursList) { TimeSpan TimeSpent = new TimeSpan(0, 0, 0); if (InTime >= session.Start && InTime <= session.End) { if (OutTime <= session.End.Add(Minute)) { TimeSpent = OutTime.Subtract(InTime); End = PIN.InDate.Add(OutTime); } else { TimeSpent = session.End.Add(Minute).Subtract(InTime); End = PIN.InDate.Add(session.End.Add(Minute)); } Start = PIN.InDate.Add(InTime); } else if (InTime < session.Start) { if (OutTime <= session.End.Add(Minute)) { TimeSpent = OutTime.Subtract(session.Start); End = PIN.InDate.Add(OutTime); } else { TimeSpent = session.End.Add(Minute).Subtract(session.Start); End = PIN.InDate.Add(session.End.Add(Minute)); } Start = PIN.InDate.Add(session.Start); } TimeSpentInEachSession.Add(new { session.SkipValidityPeriod, session.IgnoreLimit, TimeSpent = Convert.ToInt32(TimeSpent.TotalMinutes), Start, End }); } return(TimeSpentInEachSession); }
public FunctionResponse ValidateMember(BarCodeTransfer obj) { try { string barcode = obj.barcode; List <Voucher> Vouchers = obj.Vouchers; MemberDiscount mDiscount = obj.mDiscount; ParkingIn PIN = obj.PIN; ParkingOut POUT = obj.POUT; if (mDiscount != null && !string.IsNullOrEmpty(mDiscount.MemberId)) { return new FunctionResponse() { status = "error", Message = "Member already accepted." } } ; TimeSpan InTime = DateTime.Parse(PIN.InTime).TimeOfDay; TimeSpan OutTime = DateTime.Parse(POUT.OutTime).TimeOfDay; decimal DiscountAmount = 0; decimal DiscountHour = 0; int Interval; using (SqlConnection conn = new SqlConnection(GlobalClass.DataConnectionString)) { Member m = conn.Query <Member>("SELECT MemberId, MemberName, SchemeId, ExpiryDate, ActivationDate, Barcode, Address FROM Members WHERE Barcode = @MemberId ", new { MemberId = barcode.ToString() }).FirstOrDefault(); if (m == null) { return(new FunctionResponse() { status = "error", Message = "The member does not exists." }); } else if (m.ActivationDate > POUT.OutDate || m.ExpiryDate < POUT.OutDate) { return(new FunctionResponse() { status = "error", Message = "The membership is expired or not yet activated." }); } MembershipScheme scheme = conn.Query <MembershipScheme>("SELECT * FROM MembershipScheme WHERE SchemeId = @SchemeId", m).FirstOrDefault(); if (scheme == null) { return(new FunctionResponse() { status = "error", Message = "Membership scheme does not exists." }); } else if (!scheme.ValidOnWeekends && POUT.OutDate.DayOfWeek == DayOfWeek.Saturday) { return(new FunctionResponse() { status = "error", Message = "The Membership is not valid on Weekends" }); } else if (!scheme.ValidOnHolidays && conn.ExecuteScalar <int>("SELECT COUNT(*) FROM Holiday WHERE HolidayDate = @HolidayDate", new { HolidayDate = POUT.OutDate }) > 0) { return(new FunctionResponse() { status = "error", Message = "The Membership is not valid on Public Holidays" }); } List <dynamic> TimeSpentInEachSession = GetTimeSpentInEachSession(InTime, OutTime, scheme, PIN); Interval = conn.ExecuteScalar <int>("SELECT ISNULL(SUM(MDD.Interval - MDD.SkipInterval),0) Interval FROM MemberDiscountDetail MDD JOIN ParkingOutDetails POD ON MDD.PID = POD.PID WHERE MemberId = @MemberId AND POD.OutDate = @OutDate", new { MemberId = m.MemberId, OutDate = POUT.OutDate }); if (Interval >= scheme.Limit && !TimeSpentInEachSession.Any(x => x.SkipValidityPeriod && x.TimeSpent > 0)) { return(new FunctionResponse() { status = "error", Message = "Free Entrance for the Member has exceeded for day." }); } mDiscount = new MemberDiscount { MemberId = m.MemberId, SchemeId = m.SchemeId, FYID = POUT.FYID, PID = PIN.PID, }; POUT.BILLTO = m.MemberName; POUT.BILLTOADD = m.Address; if (TimeSpentInEachSession.Any(x => x.SkipValidityPeriod)) { mDiscount.SkipInterval = TimeSpentInEachSession.Where(x => x.SkipValidityPeriod).Sum(x => x.TimeSpent); } int DiscountInterval = scheme.Limit - Interval + mDiscount.SkipInterval; foreach (dynamic session in TimeSpentInEachSession.Where(x => x.TimeSpent > 0)) { if (session.IgnoreLimit) { CalculateParkingCharge(conn, session.Start, session.End, POUT.Rate_ID, PIN.VehicleType, ref DiscountAmount, ref DiscountHour); DiscountInterval -= session.TimeSpent; } else { CalculateParkingCharge(conn, session.Start, (DiscountInterval < session.TimeSpent) ? session.Start.AddMinutes(DiscountInterval) : session.End, POUT.Rate_ID, PIN.VehicleType, ref DiscountAmount, ref DiscountHour); DiscountInterval -= (DiscountInterval < session.TimeSpent) ? DiscountInterval : session.TimeSpent; } mDiscount.Interval += DiscountHour * 60; mDiscount.DiscountAmount += DiscountAmount * scheme.Discount / 100; DiscountHour = 0; DiscountAmount = 0; } POUT.CashAmount = POUT.ChargedAmount = POUT.ChargedAmount - mDiscount.DiscountAmount; obj.mDiscount = mDiscount; return(new FunctionResponse() { status = "ok", result = obj }); } //if (POUT.CashAmount == 0) // ExecuteSave(null); //PoleDisplay.WriteToDisplay(POUT.CashAmount, PoleDisplayType.AMOUNT); }catch (Exception ex) { return(new FunctionResponse() { status = "error", Message = ex.Message }); } }