diff --git a/IRTrainDotNet/Helpers/ApiUrl.cs b/IRTrainDotNet/Helpers/ApiUrl.cs new file mode 100644 index 0000000..df1ebf9 --- /dev/null +++ b/IRTrainDotNet/Helpers/ApiUrl.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Helpers +{ + public static class ApiUrl + { + public const string FadakBaseUrl = "https://api.fadaktrains.com/rpTicketing"; + //Raja Still Under Dev + public const string RajaBaseUrl = "https://hostservice.raja.ir/Api/WebSiteService"; + //Safir Completely Under Dev + public const string SafirBaseUrl = "http://www.safirrail.ir"; + + public const string Login = "/Login"; + public const string Stations = "/Station"; + public const string Station = "/Station/"; // + "{StationId}" + public const string GetLastVersion = "/GetLastVersion"; + public const string GetWagonAvailableSeatCount = "/GetWagonAvailableSeatCount"; + public const string LockSeat = "/LockSeat"; + public const string LockSeatBulk = "/LockSeatBulk"; + public const string UnlockSeat = "/UnlockSeat"; + public const string SaveTicketsInfo = "/SaveTicketsInfo"; + public const string RegisterTickets = "/RegisterTickets"; + public const string TicketReportA = "/TicketReportA"; + public const string RefundTicketInfo = "/RefundTicketInfo"; + public const string RefundTicket = "/RefundTicket"; + public const string UserSales = "/UserSales"; + public const string AgentCredit = "/AgentCredit"; + + public const string GetTrainWagonMessage = "/GetTrainWagonMessage"; + public const string StationTimeLine = "/StationTimeLine"; + public const string GetWagonImage = "/GetWagonImage"; + } +} diff --git a/IRTrainDotNet/Helpers/Constants.cs b/IRTrainDotNet/Helpers/Constants.cs new file mode 100644 index 0000000..a930cd6 --- /dev/null +++ b/IRTrainDotNet/Helpers/Constants.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Helpers +{ + public static class Constants + { + public const string PreToken = "bmhh "; + public static readonly List SystemErrorCodes = new List { + 100, 103, 110, 111, 118, 123, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, + 210, 211,212, 213, 221, 226}; + } +} diff --git a/IRTrainDotNet/Helpers/Enums.cs b/IRTrainDotNet/Helpers/Enums.cs new file mode 100644 index 0000000..ce18726 --- /dev/null +++ b/IRTrainDotNet/Helpers/Enums.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Helpers +{ + public enum TarrifCodes + { + Full = 1, + Child = 2, + Shahed = 3, + Janbaz = 4, + CompartmentFiller = 5, + Infant = 6 + } + public enum Gender + { + Men = 1, + Wemen = 2, + Family = 3 + } + public enum OffTime + { + First = 00000015, // 00:00 ---> 00:15 + Second = 06300645, // 06:30 ---> 06:45 + Third = 13301345, // 13:30 ---> 13:45 + Forth = 19301945 // 19:30 ---> 19:45 + } + public enum Company + { + Raja = 1, + Fadak = 2, + Safir = 3 + } +} diff --git a/IRTrainDotNet/Helpers/Extentions.cs b/IRTrainDotNet/Helpers/Extentions.cs new file mode 100644 index 0000000..dec242e --- /dev/null +++ b/IRTrainDotNet/Helpers/Extentions.cs @@ -0,0 +1,87 @@ +using IRTrainDotNet.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Helpers +{ + public static class Extentions + { + public static string ToAuthorization(this string token) + { + return Constants.PreToken + token; + } + public static Uri ToUri(this string url, int id = -1) + { + if (id != -1) + return new Uri(url + id, UriKind.Absolute); + else + return new Uri(url, UriKind.Absolute); + } + + public static bool IsSystemError(this int code) + { + return Constants.SystemErrorCodes.Contains(code); + } + public static string GetSystemErrorMessage(this int exceptionId, string exceptionMessage) + { + if (exceptionId.IsSystemError()) + { + switch (exceptionId) + { + case 100: + return "خطای نامشخص"; + case 103: + return "خطا در ارتباط با سیستم فروش"; + case 110: + return "قطار انتخابی امکان انتخاب غذا ندارد."; + case 111: + return "تعداد غذای مورد نظر از تعداد بلیت درخواستی بیشتر است."; + case 118: + return "قطار %1 انتخاب شده کوپه ای نبوده و امکان دربست کردن کوپه وجود ندارد. "; + case 123: + return "اطلاعات تراکنش مورد نظر یافت نشد. "; + case 200: + return "خطا در ارتباط با سرور بانک اطلاعاتی "; + case 201: + return "خطا در عملیات بانک اطلاعاتی "; + case 202: + return "نام کاربری یا کلمه عبور اشتباه است "; + case 203: + return "حساب کاربری شما غیر فعال است "; + case 204: + return "حساب کاربری شما مسدود است "; + case 205: + return "حساب کاربری شما تائید نگردیده است "; + case 206: + return "ممکن است به تعداد درخواستی شما در قطار، صندلی آزاد در کنار هم وجود نداشته باشد "; + case 207: + return "سیستم پایه فروش بلیت قادر به ارائه خدمات نمیباشد، لطفا پس از مدتی دوباره تلاش نمایید "; + case 208: + return "خطا در بازیابی نام و نام خانوادگی مسافر "; + case 209: + return "کد ملی و تاریخ تولد با هم مطابقت ندارند. "; + case 210: + return "خطای نامشخص در گرفتن لیست قطارها "; + case 211: + return "خطای نامشخص در ثبت بلیتها "; + case 212: + return "هیچ بلیتی با این مشخصات یافت نشد. "; + case 213: + return "اعتبار کاربر کافی نیست. "; + case 221: + return "آژانس شما غیر فعال است."; + case 226: + return "سرویس RegisterTickets قبل از سرویس SaveTicketsInfo فراخوانی شده است."; + default: + return "نامشخص"; + } + } + else + { + return exceptionMessage; + } + + } + } +} diff --git a/IRTrainDotNet/IIRTrainApi.cs b/IRTrainDotNet/IIRTrainApi.cs new file mode 100644 index 0000000..b3e5a54 --- /dev/null +++ b/IRTrainDotNet/IIRTrainApi.cs @@ -0,0 +1,84 @@ +using IRTrainDotNet.Helpers; +using IRTrainDotNet.Models; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace IRTrainDotNet +{ + public interface IIRTrainApi + { + #region Synchronous + //------------------------------------------- + #region Auth + ServiceResult Login(LoginModel loginModel, Company company); + bool ValidateTokenWithTime(DateTime addDate); + bool ValidateTokenWithRequest(string token, Company company); + #endregion + #region Stations + ServiceResult> GetStations(string authToken, Company company); + ServiceResult GetStationById(string authToken, int stationId, Company company); + #endregion + #region Raja + ServiceResult GetLastVersion(string authToken, Company company); + #endregion + #region Wagon + ServiceResult GetWagonAvailableSeatCount(string authToken, GetWagonAvailableSeatCountParams getWagonAvailableSeatCountParams, Company company); + #endregion + #region Seat + ServiceResult LockSeat(string authToken, LockSeatParams lockSeatParams, Company company); + ServiceResult LockSeatBulk(string authToken, LockSeatBulkParams lockSeatBulkParams, Company company); + ServiceResult UnlockSeat(string authToken, UnlockSeatParams unlockSeatParams, Company company); + #endregion + #region Ticket + ServiceResult SaveTicketsInfo(string authToken, SaveTicketsInfoParams saveTicketsInfoParams, Company company); + ServiceResult RegisterTickets(string authToken, RegisterTicketParams registerTicketParams, Company company); + ServiceResult TicketReportA(string authToken, TicketReportAParams ticketReportAParams, Company company); + ServiceResult RefundTicketInfo(string authToken, RefundTicketInfoParams refundTicketInfoParams, Company company); + ServiceResult RefundTicket(string authToken, RefundTicketParams refundTicketParams, Company company); + #endregion + #region Agent + ServiceResult> UserSales(string authToken, Company company); + ServiceResult AgentCredit(string authToken, Company company); + #endregion + //------------------------------------------- + #endregion + + #region Asynchronous + //------------------------------------------- + #region Auth + Task> LoginAsync(LoginModel loginModel, Company company); + Task ValidateTokenWithRequestAsync(string token, Company company); + #endregion + #region Stations + Task>> GetStationsAsync(string authToken, Company company); + Task> GetStationByIdAsync(string authToken, int stationId, Company company); + #endregion + #region Raja + Task> GetLastVersionAsync(string authToken, Company company); + #endregion + #region Wagon + Task> GetWagonAvailableSeatCountAsync(string authToken, GetWagonAvailableSeatCountParams getWagonAvailableSeatCountParams, Company company); + #endregion + #region Seat + Task> LockSeatAsync(string authToken, LockSeatParams lockSeatParams, Company company); + Task> LockSeatBulkAsync(string authToken, LockSeatBulkParams lockSeatBulkParams, Company company); + Task> UnlockSeatAsync(string authToken, UnlockSeatParams unlockSeatParams, Company company); + #endregion + #region Ticket + Task> SaveTicketsInfoAsync(string authToken, SaveTicketsInfoParams saveTicketsInfoParams, Company company); + Task> RegisterTicketsAsync(string authToken, RegisterTicketParams registerTicketParams, Company company); + Task> TicketReportAAsync(string authToken, TicketReportAParams ticketReportAParams, Company company); + Task> RefundTicketInfoAsync(string authToken, RefundTicketInfoParams refundTicketInfoParams, Company company); + Task> RefundTicketAsync(string authToken, RefundTicketParams refundTicketParams, Company company); + + #endregion + #region Agent + Task>> UserSalesAsync(string authToken, Company company); + Task> AgentCreditAsync(string authToken, Company company); + #endregion + //------------------------------------------- + #endregion + } +} diff --git a/IRTrainDotNet/IRTrainApi.cs b/IRTrainDotNet/IRTrainApi.cs new file mode 100644 index 0000000..af82c05 --- /dev/null +++ b/IRTrainDotNet/IRTrainApi.cs @@ -0,0 +1,1297 @@ +using IRTrainDotNet.Helpers; +using IRTrainDotNet.Models; +using Newtonsoft.Json; +using RestSharp; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace IRTrainDotNet +{ + public class IRTrainApi : IIRTrainApi + { + #region ctor + private readonly CancellationTokenSource _cancellationTokenSource; + public IRTrainApi() + { + _cancellationTokenSource = new CancellationTokenSource(); + } + #endregion + + #region Synchronous + //------------------------------------------- + #region Auth + public ServiceResult Login(LoginModel loginModel, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + var _client = new RestClient(path + ApiUrl.Login); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddJsonBody(loginModel); + + var result = new ServiceResult(); + var response = _client.Execute(_request); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + var res = JsonConvert + .DeserializeObject>(response.Content); + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + + return result; + } + public bool ValidateTokenWithTime(DateTime addDate) + { + if (addDate.AddMinutes(20) > DateTime.Now) + { + return true; + } + else + { + return false; + } + } + public bool ValidateTokenWithRequest(string token, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetLastVersion); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + token); + var response = _client.Execute(_request); + if (response.StatusCode == HttpStatusCode.Unauthorized) + { + return false; + } + else + { + return true; + } + } + #endregion + #region Stations + public ServiceResult> GetStations(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.Stations); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult>(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult GetStationById(string authToken, int stationId, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + + var _client = new RestClient(path + ApiUrl.Station.ToUri(stationId)); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Raja + public ServiceResult GetLastVersion(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetLastVersion); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Wagon + public ServiceResult GetWagonAvailableSeatCount(string authToken, GetWagonAvailableSeatCountParams getWagonAvailableSeatCountParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetWagonAvailableSeatCount); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(getWagonAvailableSeatCountParams); + var result = new ServiceResult(); + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Seat + public ServiceResult LockSeat(string authToken, LockSeatParams lockSeatParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.LockSeat); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(lockSeatParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult LockSeatBulk(string authToken, LockSeatBulkParams lockSeatBulkParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.LockSeatBulk); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(lockSeatBulkParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult UnlockSeat(string authToken, UnlockSeatParams unlockSeatParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.UnlockSeat); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(unlockSeatParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Ticket + public ServiceResult SaveTicketsInfo(string authToken, SaveTicketsInfoParams saveTicketsInfoParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.SaveTicketsInfo); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(saveTicketsInfoParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult RegisterTickets(string authToken, RegisterTicketParams registerTicketParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RegisterTickets); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(registerTicketParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult TicketReportA(string authToken, TicketReportAParams ticketReportAParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.TicketReportA); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(ticketReportAParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult RefundTicketInfo(string authToken, RefundTicketInfoParams refundTicketInfoParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RefundTicketInfo); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(refundTicketInfoParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult RefundTicket(string authToken, RefundTicketParams refundTicketParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RefundTicket); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(refundTicketParams); + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + + #endregion + #region Agent + public ServiceResult> UserSales(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.UserSales); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult>(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public ServiceResult AgentCredit(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.AgentCredit); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = _client.Execute(_request); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + //------------------------------------------- + #endregion + + #region Asynchronous + //------------------------------------------- + #region Auth + public async Task> LoginAsync(LoginModel loginModel, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient((path + ApiUrl.Login).ToUri()); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddJsonBody(loginModel); + + var result = new ServiceResult(); + var cancellationTokenSource = new CancellationTokenSource(); + var response = await _client.ExecuteTaskAsync(_request, cancellationTokenSource.Token); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + var res = JsonConvert + .DeserializeObject>(response.Content); + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + + return result; + } + public async Task ValidateTokenWithRequestAsync(string token, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetLastVersion); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + token); + var response = await _client.ExecuteTaskAsync(_request); + if (response.StatusCode == HttpStatusCode.Unauthorized) + { + return false; + } + else { + return true; + } + } + #endregion + #region Stations + public async Task>> GetStationsAsync(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.Stations); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult>(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + + var res = JsonConvert.DeserializeObject>>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + + return result; + } + public async Task> GetStationByIdAsync(string authToken, int stationId, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.Station.ToUri(stationId)); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Raja + public async Task> GetLastVersionAsync(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetLastVersion); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Wagon + public async Task> GetWagonAvailableSeatCountAsync(string authToken, GetWagonAvailableSeatCountParams getWagonAvailableSeatCountParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.GetWagonAvailableSeatCount); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(getWagonAvailableSeatCountParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Seat + public async Task> LockSeatAsync(string authToken, LockSeatParams lockSeatParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.LockSeat); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(lockSeatParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> LockSeatBulkAsync(string authToken, LockSeatBulkParams lockSeatBulkParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.LockSeatBulk); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(lockSeatBulkParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> UnlockSeatAsync(string authToken, UnlockSeatParams unlockSeatParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.UnlockSeat); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(unlockSeatParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + #region Ticket + public async Task> SaveTicketsInfoAsync(string authToken, SaveTicketsInfoParams saveTicketsInfoParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.SaveTicketsInfo); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(saveTicketsInfoParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> RegisterTicketsAsync(string authToken, RegisterTicketParams registerTicketParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RegisterTickets); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(registerTicketParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> TicketReportAAsync(string authToken, TicketReportAParams ticketReportAParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.TicketReportA); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(ticketReportAParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> RefundTicketInfoAsync(string authToken, RefundTicketInfoParams refundTicketInfoParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RefundTicketInfo); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(refundTicketInfoParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> RefundTicketAsync(string authToken, RefundTicketParams refundTicketParams, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.RefundTicket); + var _request = new RestRequest(Method.POST); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + _request.AddJsonBody(refundTicketParams); + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + + #endregion + #region Agent + public async Task>> UserSalesAsync(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.UserSales); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult>(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + public async Task> AgentCreditAsync(string authToken, Company company) + { + var path = company == Company.Raja ? ApiUrl.RajaBaseUrl : company == Company.Fadak ? ApiUrl.FadakBaseUrl : ApiUrl.SafirBaseUrl; + + var _client = new RestClient(path + ApiUrl.AgentCredit); + var _request = new RestRequest(Method.GET); + _request.AddHeader("Content-Type", "application/json"); + _request.AddHeader("Authorization", Constants.PreToken + authToken); + + var result = new ServiceResult(); + + var response = await _client.ExecuteTaskAsync(_request, _cancellationTokenSource.Token); + var res = JsonConvert.DeserializeObject>(response.Content); + + if (response.IsSuccessful && response.StatusCode == HttpStatusCode.OK) + { + if (res.ExceptionId == 0 && res.ExceptionMessage == null) + { + result.Status = true; + result.Result = res.Result; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + } + else if (response.StatusCode == HttpStatusCode.Unauthorized) + { + result.Status = false; + result.Unauthorized = true; + result.Message = "مشکل در اعتبار سنجی دوباره لاگین کنید"; + } + else + { + result.Status = false; + result.Message = res.ExceptionId.GetSystemErrorMessage(res.ExceptionMessage); + } + return result; + } + #endregion + //------------------------------------------- + #endregion + } +} diff --git a/IRTrainDotNet/IRTrainDotNet.csproj b/IRTrainDotNet/IRTrainDotNet.csproj new file mode 100644 index 0000000..b344e51 --- /dev/null +++ b/IRTrainDotNet/IRTrainDotNet.csproj @@ -0,0 +1,45 @@ + + + + netstandard2.0 + icon.ico + 1.9.5 + Keyvan Abdollahzadeh + Iran Railway-Trains services Api-WebService for dotnet + LICENSE + https://github.com/keyone2693/IRTrainDotNet + angular-4.jpg + + https://github.com/keyone2693/IRTrainDotNet + Public + In this version: +you have the "Fadak" service completely good to go +and you can use it if you had the username-password + +The "Raja" system under development +the only thing still not working is two or three methods of Raja system, that's it !!! + +and the "Safir" system I am working on it +not implemented yet :( + + Iran,Train,Ticket + + + + + + True + + + + True + + + + + + + + + + diff --git a/IRTrainDotNet/LICENSE b/IRTrainDotNet/LICENSE new file mode 100644 index 0000000..e0b2c6c --- /dev/null +++ b/IRTrainDotNet/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Keyvan Abodollahzadeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/IRTrainDotNet/Models/EmptyResult.cs b/IRTrainDotNet/Models/EmptyResult.cs new file mode 100644 index 0000000..b1c22e6 --- /dev/null +++ b/IRTrainDotNet/Models/EmptyResult.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class EmptyResult + { + } +} diff --git a/IRTrainDotNet/Models/GetOptionalServicesResult.cs b/IRTrainDotNet/Models/GetOptionalServicesResult.cs new file mode 100644 index 0000000..f318088 --- /dev/null +++ b/IRTrainDotNet/Models/GetOptionalServicesResult.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetOptionalServicesResult + { + public int ServiceTypeCode { get; set; } + public string ServiceTypeName { get; set; } + public string Description { get; set; } + public int ShowMoney { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/GetTrainWagonMessageParams.cs b/IRTrainDotNet/Models/GetTrainWagonMessageParams.cs new file mode 100644 index 0000000..1d17d74 --- /dev/null +++ b/IRTrainDotNet/Models/GetTrainWagonMessageParams.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetTrainWagonMessageParams + { + public int CircularPeriod { get; set; } + public int CircularNumberSerial { get; set; } + public int TrainNumber { get; set; } + public int WagonTaype { get; set; } + public string MoveDate { get; set; } + } + + + +} diff --git a/IRTrainDotNet/Models/GetTrainWagonMessageResult.cs b/IRTrainDotNet/Models/GetTrainWagonMessageResult.cs new file mode 100644 index 0000000..fca4e49 --- /dev/null +++ b/IRTrainDotNet/Models/GetTrainWagonMessageResult.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetTrainWagonMessageResult + { + public string WagonMessage { get; set; } + } +} diff --git a/IRTrainDotNet/Models/GetWagonAvailableSeatCountParams.cs b/IRTrainDotNet/Models/GetWagonAvailableSeatCountParams.cs new file mode 100644 index 0000000..0696798 --- /dev/null +++ b/IRTrainDotNet/Models/GetWagonAvailableSeatCountParams.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetWagonAvailableSeatCountParams + { + public int FromStation { get; set; } + public int ToStation { get; set; } + public DateTime GoingDate { get; set; } + public DateTime ReturnDate { get; set; } + public int Gender; + public bool ExclusiveCompartment { get; set; } + public int AdultsCount { get; set; } + public int ChildrenCount { get; set; } + public int InfantsCount { get; set; } + } +} diff --git a/IRTrainDotNet/Models/GetWagonAvailableSeatCountResult.cs b/IRTrainDotNet/Models/GetWagonAvailableSeatCountResult.cs new file mode 100644 index 0000000..6a3ca2a --- /dev/null +++ b/IRTrainDotNet/Models/GetWagonAvailableSeatCountResult.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetWagonAvailableSeatCountResult + { + public List goingResults { get; set; } + public List returnResults { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/GetWagonImageParams.cs b/IRTrainDotNet/Models/GetWagonImageParams.cs new file mode 100644 index 0000000..9244028 --- /dev/null +++ b/IRTrainDotNet/Models/GetWagonImageParams.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class GetWagonImageParams + { + public int WagonNumber { get; set; } + } + +} diff --git a/IRTrainDotNet/Models/IrTrainResult.cs b/IRTrainDotNet/Models/IrTrainResult.cs new file mode 100644 index 0000000..5f78518 --- /dev/null +++ b/IRTrainDotNet/Models/IrTrainResult.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class IrTrainResult + { + public int ExceptionId { get; set; } + public string ExceptionMessage { get; set; } + public T Result { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/LockSeatBulkParams.cs b/IRTrainDotNet/Models/LockSeatBulkParams.cs new file mode 100644 index 0000000..2dc9567 --- /dev/null +++ b/IRTrainDotNet/Models/LockSeatBulkParams.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class LockSeatBulkParams + { + public WagonAvailableSeatCount SelectedWagon { get; set; } + public int FromStation { get; set; } + public int ToStation { get; set; } + public int Gender { get; set; } + public int SeatCount { get; set; } + public long SellMaster { get; set; } + public bool IsExclusiveCompartment { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/LockSeatBulkResult.cs b/IRTrainDotNet/Models/LockSeatBulkResult.cs new file mode 100644 index 0000000..75cb714 --- /dev/null +++ b/IRTrainDotNet/Models/LockSeatBulkResult.cs @@ -0,0 +1,19 @@ +using IRTrainDotNet.Helpers; +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class LockSeatBulkResult + { + public int SellMasterId { get; set; } + public string WagonNumbers { get; set; } + public string CompartmentNumbers { get; set; } + public int SaleId { get; set; } + public Dictionary Prices { get; set; } + public List OptionalServices { get; set; } + public List PricesInOtherCurrencies { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/LockSeatParams.cs b/IRTrainDotNet/Models/LockSeatParams.cs new file mode 100644 index 0000000..4e5759d --- /dev/null +++ b/IRTrainDotNet/Models/LockSeatParams.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class LockSeatParams + { + public WagonAvailableSeatCount SelectedWagon { get; set; } + public int FromStation { get; set; } + public int ToStation { get; set; } + public int Gender { get; set; } + public int SeatCount { get; set; } + public long SellMaster { get; set; } + public bool IsExclusiveCompartment { get; set; } + } +} diff --git a/IRTrainDotNet/Models/LockSeatResult.cs b/IRTrainDotNet/Models/LockSeatResult.cs new file mode 100644 index 0000000..fe4136e --- /dev/null +++ b/IRTrainDotNet/Models/LockSeatResult.cs @@ -0,0 +1,18 @@ +using IRTrainDotNet.Helpers; +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class LockSeatResult + { + public int SellMasterId { get; set; } + public int MoneyFood { get; set; } + public long SalonNo { get; set; } + public long CompartmentNo { get; set; } + public int SaleId { get; set; } + public Dictionary Prices { get; set; } + public List OptionalServices { get; set; } + } +} diff --git a/IRTrainDotNet/Models/LoginModel.cs b/IRTrainDotNet/Models/LoginModel.cs new file mode 100644 index 0000000..8bd3a50 --- /dev/null +++ b/IRTrainDotNet/Models/LoginModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class LoginModel + { + public string Username { get; set; } + public string Password { get; set; } + } +} diff --git a/IRTrainDotNet/Models/PassengerInfo.cs b/IRTrainDotNet/Models/PassengerInfo.cs new file mode 100644 index 0000000..360123b --- /dev/null +++ b/IRTrainDotNet/Models/PassengerInfo.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class PassengerInfo + { + public string Name { get; set; } + public string Family { get; set; } + public DateTime BirthDate { get; set; } + public string NationalCode { get; set; } + public int Tariff { get; set; } + public int OptionalServiceId { get; set; } + public string PromotionCode { get; set; } + } +} diff --git a/IRTrainDotNet/Models/PriceInOtherCurrency.cs b/IRTrainDotNet/Models/PriceInOtherCurrency.cs new file mode 100644 index 0000000..f76819e --- /dev/null +++ b/IRTrainDotNet/Models/PriceInOtherCurrency.cs @@ -0,0 +1,13 @@ +using IRTrainDotNet.Helpers; +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class PriceInOtherCurrency + { + public TarrifCodes Tarrif { get; set; } + public Dictionary PriceInCurrencies { get; set; } + } +} diff --git a/IRTrainDotNet/Models/RefundTicketInfoParams.cs b/IRTrainDotNet/Models/RefundTicketInfoParams.cs new file mode 100644 index 0000000..fbfb384 --- /dev/null +++ b/IRTrainDotNet/Models/RefundTicketInfoParams.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class RefundTicketInfoParams + { + public int SaleId { get; set; } + public string TicketSeries { get; set; } + public int SaleCenterCode { get; set; } + public int WagonNumber { get; set; } + public int SeatNumber { get; set; } + } +} diff --git a/IRTrainDotNet/Models/RefundTicketInfoResult.cs b/IRTrainDotNet/Models/RefundTicketInfoResult.cs new file mode 100644 index 0000000..70c885d --- /dev/null +++ b/IRTrainDotNet/Models/RefundTicketInfoResult.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class RefundTicketInfoResult + { + public int RetStatus { get; set; } + public int Id { get; set; } + public int Serial { get; set; } + public int TrainNumber { get; set; } + public int WagonType { get; set; } + public int WagonNumber { get; set; } + public int CompartmentNumber { get; set; } + public int RateCode { get; set; } + public int SeatNumber { get; set; } + public int RationCode { get; set; } + public int SexCode { get; set; } + public string Name { get; set; } + public string Family { get; set; } + public string NationalCode { get; set; } + public string Mobile { get; set; } + public int Tariff { get; set; } + public int Degree { get; set; } + public int TicketType { get; set; } + public int ReduplicateId { get; set; } + public int Status { get; set; } + public int Formula7 { get; set; } + public int SaleCenterCode { get; set; } + public DateTime RegisteredAt { get; set; } + public int IsPrintable { get; set; } + public DateTime MoveDateTime { get; set; } + public int HalfPrice { get; set; } + public int FullPrice { get; set; } + public int PathCode { get; set; } + public int TrainHaveService { get; set; } + public DateTime MoveDateTrain { get; set; } + public int OptionalServiceId { get; set; } + public int ServicesAmount { get; set; } + public int CircularNumberSerial { get; set; } + public int SaleId { get; set; } + public int TicketTypeCode { get; set; } + public string TicketTypeName { get; set; } + public int IsPrintMoney { get; set; } + public int IsReduplicate { get; set; } + public int IsRuind { get; set; } + public int IsRuindAfterRun { get; set; } + public int SmCount { get; set; } + public int AppType { get; set; } + public int RetStatusRuind { get; set; } + public int RetCode { get; set; } + public int OldTicketId { get; set; } + public int AppCodeOld { get; set; } + public int RuindType { get; set; } + public int PenaltyPercentage { get; set; } + public int PenaltyAmount { get; set; } + public int TotalAmount { get; set; } + public int CircularPeriod { get; set; } + public int OwnerCode { get; set; } + } +} diff --git a/IRTrainDotNet/Models/RefundTicketParams.cs b/IRTrainDotNet/Models/RefundTicketParams.cs new file mode 100644 index 0000000..c5caaef --- /dev/null +++ b/IRTrainDotNet/Models/RefundTicketParams.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class RefundTicketParams + { + public int SaleId { get; set; } + public string TicketSeries { get; set; } + public int SaleCenterCode { get; set; } + public int WagonNumber { get; set; } + public int SeatNumber { get; set; } + } +} diff --git a/IRTrainDotNet/Models/RegisterTicketParams.cs b/IRTrainDotNet/Models/RegisterTicketParams.cs new file mode 100644 index 0000000..53fe93d --- /dev/null +++ b/IRTrainDotNet/Models/RegisterTicketParams.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class RegisterTicketParams + { + public long SellMasterId { get; set; } + } +} diff --git a/IRTrainDotNet/Models/SaveTicketsInfoParams.cs b/IRTrainDotNet/Models/SaveTicketsInfoParams.cs new file mode 100644 index 0000000..8889ce4 --- /dev/null +++ b/IRTrainDotNet/Models/SaveTicketsInfoParams.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class SaveTicketsInfoParams + { + public List PassengersInfo { get; set; } + public long SaleId { get; set; } + public string Tel { get; set; } + public string Email { get; set; } + } +} diff --git a/IRTrainDotNet/Models/ServiceResult.cs b/IRTrainDotNet/Models/ServiceResult.cs new file mode 100644 index 0000000..e2fb3cb --- /dev/null +++ b/IRTrainDotNet/Models/ServiceResult.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class ServiceResult + { + public bool Status { get; set; } = false; + public bool Unauthorized { get; set; } = false; + public string Message { get; set; } = "بدون خطا"; + public T Result { get; set; } + } +} diff --git a/IRTrainDotNet/Models/Station.cs b/IRTrainDotNet/Models/Station.cs new file mode 100644 index 0000000..bf0c936 --- /dev/null +++ b/IRTrainDotNet/Models/Station.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class Station + { + public int Code { get; set; } + public string Name { get; set; } + public bool IsVisible { get; set; } + } +} diff --git a/IRTrainDotNet/Models/StationTimeLineParams.cs b/IRTrainDotNet/Models/StationTimeLineParams.cs new file mode 100644 index 0000000..c84441b --- /dev/null +++ b/IRTrainDotNet/Models/StationTimeLineParams.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class StationTimeLineParams + { + public int CircularPeriod { get; set; } + public int CircularNumberSerial { get; set; } + public int pTrainNumber { get; set; } + public DateTime MoveDate { get; set; } + } + +} diff --git a/IRTrainDotNet/Models/StationTimeLineResult.cs b/IRTrainDotNet/Models/StationTimeLineResult.cs new file mode 100644 index 0000000..663385e --- /dev/null +++ b/IRTrainDotNet/Models/StationTimeLineResult.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class StationTimeLineResult + { + public DateTime TimeStop { get; set; } + public int StationCode { get; set; } + public string StationName { get; set; } + public DateTime EnterTime { get; set; } + public string EnterTimeF { get; set; } + public DateTime ExitTime { get; set; } + public int DayAfter { get; set; } + public int row { get; set; } + public DateTime ExitTimeProgram { get; set; } + public string Width { get; set; } + } + +} diff --git a/IRTrainDotNet/Models/TicketReportAParams.cs b/IRTrainDotNet/Models/TicketReportAParams.cs new file mode 100644 index 0000000..b88d163 --- /dev/null +++ b/IRTrainDotNet/Models/TicketReportAParams.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class TicketReportAParams + { + public string Tel { get; set; } + public int SaleId { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/TicketReportAResult.cs b/IRTrainDotNet/Models/TicketReportAResult.cs new file mode 100644 index 0000000..71b04e4 --- /dev/null +++ b/IRTrainDotNet/Models/TicketReportAResult.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class TicketReportAResult + { + public string CompanyName { get; set; } + public string StartStationName { get; set; } + public string EndStationName { get; set; } + public DateTime MoveDate { get; set; } + public string MoveTime { get; set; } + public int WagonNumber { get; set; } + public int SeatNumber { get; set; } + public int SexCode { get; set; } + public string Name { get; set; } + public string Family { get; set; } + public string TariffName { get; set; } + public string RationName { get; set; } + public DateTime RegisterDate { get; set; } + public int TrainNumber { get; set; } + public string WagonTypeName { get; set; } + public int Degree { get; set; } + public string TimeOfArrival { get; set; } + public string TrainMessage { get; set; } + public int TicketNumber { get; set; } + public int TicketSeries { get; set; } + public int SaleCenterCode { get; set; } + public int Formula10 { get; set; } + public int Formula12 { get; set; } + public int Formula18 { get; set; } + public int SellerCode { get; set; } + public int SecurityNumber { get; set; } + public string Base64BarcodeImage { get; set; } + public string Tel { get; set; } + public int OwnerCode { get; set; } + + } +} diff --git a/IRTrainDotNet/Models/UnlockSeatParams.cs b/IRTrainDotNet/Models/UnlockSeatParams.cs new file mode 100644 index 0000000..178f06c --- /dev/null +++ b/IRTrainDotNet/Models/UnlockSeatParams.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class UnlockSeatParams + { + public long SaleId { get; set; } + public int TrainNumber { get; set; } + public DateTime MoveDate { get; set; } + } +} diff --git a/IRTrainDotNet/Models/UserSaleMetadata.cs b/IRTrainDotNet/Models/UserSaleMetadata.cs new file mode 100644 index 0000000..ae5f84a --- /dev/null +++ b/IRTrainDotNet/Models/UserSaleMetadata.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class UserSaleMetadata + { + public int UserId { get; set; } + public string UserFullName { get; set; } + public long SellMasterId { get; set; } + public int SaleId { get; set; } + public int PathCode { get; set; } + public int FromStation { get; set; } + public string FromStationName { get; set; } + public int ToStation { get; set; } + public string ToStationName { get; set; } + public string Email { get; set; } + public string Mobile { get; set; } + public int TrainNumber { get; set; } + public DateTime MoveDate { get; set; } + public int WagonType { get; set; } + public long? Amount { get; set; } + public DateTime? RegisteredAt { get; set; } + } +} diff --git a/IRTrainDotNet/Models/WagonAvailableSeatCount.cs b/IRTrainDotNet/Models/WagonAvailableSeatCount.cs new file mode 100644 index 0000000..6fc00a3 --- /dev/null +++ b/IRTrainDotNet/Models/WagonAvailableSeatCount.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace IRTrainDotNet.Models +{ + public class WagonAvailableSeatCount + { + public string SelectionHint { get; set; } + public string WagonName { get; set; } + public int CircularNumberSerial { get; set; } + public int RateCode { get; set; } + public int PathCode { get; set; } + public int WagonType { get; set; } + public int TrainNumber { get; set; } + public int CircularPeriod { get; set; } + public string ExitTime { get; set; } + public DateTime MoveDate { get; set; } + public bool IsCompartment { get; set; } + public int CompartmentCapicity { get; set; } + public int Degree { get; set; } + public decimal Capacity { get; set; } + public int Cost { get; set; } + public int CountingAll { get; set; } + public bool HasAirConditioning { get; set; } + public bool HasMedia { get; set; } + public int FullPrice { get; set; } + public string TimeOfArrival { get; set; } + public int RetStatus { get; set; } + public string DisabledReason { get; set; } + public int SoldCount { get; set; } + public int RationCode { get; set; } + public int MinutesToExitDateTime { get; set; } + } +} diff --git a/IRTrainDotNet/icon.ico b/IRTrainDotNet/icon.ico new file mode 100644 index 0000000..cd85475 Binary files /dev/null and b/IRTrainDotNet/icon.ico differ diff --git a/IrTrainWebServiceDotNet.sln b/IrTrainWebServiceDotNet.sln index a60dbff..cb706a7 100644 --- a/IrTrainWebServiceDotNet.sln +++ b/IrTrainWebServiceDotNet.sln @@ -10,6 +10,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{5B9B8AB0-B C:\Users\Key1-lab\Desktop\Documentation-v1.9.3.pdf = C:\Users\Key1-lab\Desktop\Documentation-v1.9.3.pdf EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IRTrainDotNet", "IRTrainDotNet\IRTrainDotNet.csproj", "{B393E643-5D47-4C37-B4BB-9C9757ED5109}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -20,6 +22,10 @@ Global {1C83BCD1-BDD1-419E-A949-F6D1ECE8940F}.Debug|Any CPU.Build.0 = Debug|Any CPU {1C83BCD1-BDD1-419E-A949-F6D1ECE8940F}.Release|Any CPU.ActiveCfg = Release|Any CPU {1C83BCD1-BDD1-419E-A949-F6D1ECE8940F}.Release|Any CPU.Build.0 = Release|Any CPU + {B393E643-5D47-4C37-B4BB-9C9757ED5109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B393E643-5D47-4C37-B4BB-9C9757ED5109}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B393E643-5D47-4C37-B4BB-9C9757ED5109}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B393E643-5D47-4C37-B4BB-9C9757ED5109}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE