root/trunk/eCard/eCardMVC/Platnosci/Controllers/PlatnoscController.cs @ 951

Wersja 951, 10.8 KB (wprowadzona przez alina, 16 years temu)

re #215 dodanie testów, mała przebudowa akcji Merchant (wydzielenie funkcji)

Line 
1using System;
2using System.Linq;
3using System.Web.Mvc;
4using Platnosci.Models;
5using Platnosci.Core.Linq;
6using Platnosci.Core.Interface;
7
8namespace Platnosci.Controllers
9{
10   
11    [Authorize]
12    public class PlatnoscController : Controller
13    {
14        public const string ISPAID = "payment_deposited";       //transakcja potwierdzona do rozliczenia
15        private readonly IRepository<vPlatnosciEcard> _repVPayment;       
16        private readonly IRepository<PlatnosciEcard> _repPayment;
17        private readonly IRepository<PotwierdzeniaEcard> _repConfirm;
18        private readonly ITranslateManager _translateManager;
19        private readonly FunkcjePlatnosci _funkcjePlatnosci;
20             
21        public PlatnoscController()
22        {
23            _repVPayment = new Repository<vPlatnosciEcard>(new DataContext());
24            _repPayment = new Repository<PlatnosciEcard>(new DataContext());
25            _repConfirm = new Repository<PotwierdzeniaEcard>(new DataContext());
26            _funkcjePlatnosci = new FunkcjePlatnosci();
27            _translateManager = new Translation();         
28        }
29        public PlatnoscController(IRepository<vPlatnosciEcard> repVPayment, IRepository<PlatnosciEcard> repPayment, IRepository<PotwierdzeniaEcard> repConfirm, ITranslateManager translate)
30        {
31            _repVPayment = repVPayment;
32            _repPayment = repPayment;
33            _repConfirm = repConfirm;
34            _funkcjePlatnosci = new FunkcjePlatnosci();
35            _translateManager = translate;
36        }
37        public ActionResult Show(string id, string language)
38        {
39            language = _funkcjePlatnosci.SetLanguage(language);
40            var id1 = ConvertId(id);
41
42            var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault();
43            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));
44           
45            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc); 
46
47            var tablicaPotwierdzenia = _repConfirm.FindItemsByIdFaktury(id1);
48            if (tablicaPotwierdzenia.Count > 0) //platnosc za fakture zostala uregulowana
49            {
50                var dataZaplaty = String.Format("{0:dd-MM-yyyy}", tablicaPotwierdzenia[0].AUTHTIME);
51                invoiceDeatailsViewData.info = String.Format(_translateManager.Translate("tlumaczenia","zaplacono"), platnosc.Faktura_Numer, dataZaplaty);
52                invoiceDeatailsViewData.termin = dataZaplaty;
53                return View("Paid", invoiceDeatailsViewData);
54            }       
55            return View(invoiceDeatailsViewData);           
56        }       
57        [Authorize]
58        [AcceptVerbs(HttpVerbs.Post)]
59        public ActionResult Show(Payer payer, string language)
60        {
61            language = _funkcjePlatnosci.SetLanguage(language);
62           
63            var platnosc = _repVPayment.Find(p => p.ID_faktury == payer.Id_faktury).SingleOrDefault();
64           
65            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));
66           
67            if (String.IsNullOrEmpty(payer.FirstName))
68            {
69                ModelState.AddModelError("Payer.FirstName", _translateManager.Translate("tlumaczenia", "err_imieWK"));
70            }
71            if (String.IsNullOrEmpty(payer.LastName))
72            {
73                ModelState.AddModelError("Payer.LastName", _translateManager.Translate("tlumaczenia", "err_nazwiskoWK"));
74            }
75            if (ModelState.IsValid == false)
76            {
77                var kwota = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano);
78                var viewData = InitInvoiceDetailsViewData(platnosc);
79                return View("Show",viewData);
80            }
81
82            return RedirectToAction("Merchant", "Merchant", payer);
83        }
84
85        public ActionResult Ok(string id, string language, string o)
86        {
87            var order = ConvertId(o);
88           
89            language = _funkcjePlatnosci.SetLanguage(language);
90           
91            var id1 = ConvertId(id);
92           
93            var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault();
94           
95            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));           
96           
97            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);
98
99            //sprawdzamy czy dla kombinacji ordernumber i idfaktury istnieje platnosc,
100            //jesli tak, to sprawdzamy czy przyszlo potwierdzenie z eCardu.             
101            if (order > 0)
102                if (CheckConfirm(id1, order) == 0)   //nie ma potwierdzenia z eCardu
103                    invoiceDeatailsViewData.info = String.Format(_translateManager.Translate("tlumaczenia", "blad1"), invoiceDeatailsViewData.vPlatnosciEcard.Faktura_Numer);
104               
105            if (order == 0 || (CheckConfirm(id1, order) == 2) && order > 0 )
106                invoiceDeatailsViewData.info = _translateManager.Translate("tlumaczenia", "weryfikacja");
107           
108            return View(invoiceDeatailsViewData);
109        }
110        public ActionResult Fail(string id, string language)
111        {
112            language = _funkcjePlatnosci.SetLanguage(language);
113            var id1 = ConvertId(id);
114            var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault();
115            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));
116
117            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);
118            return View(invoiceDeatailsViewData);
119        }
120        public ActionResult Form()
121        {
122            return View();
123        }
124        public ActionResult Status()
125        {
126            var potwierdzenie = new PotwierdzeniaEcard();
127            var content = new ContentResult();
128            try
129            {
130                if (!String.IsNullOrEmpty(Request.Form["APPROVALCODE"])) potwierdzenie.APPROVALCODE = Request.Form["APPROVALCODE"];
131                if (!String.IsNullOrEmpty(Request.Form["AUTHTIME"])) potwierdzenie.AUTHTIME = Convert.ToDateTime(Request.Form["AUTHTIME"]);
132                if (!String.IsNullOrEmpty(Request.Form["BIN"])) potwierdzenie.BIN = Request.Form["BIN"];
133                if (!String.IsNullOrEmpty(Request.Form["COMMTYPE"])) potwierdzenie.COMMTYPE = Request.Form["COMMTYPE"];
134                if (!String.IsNullOrEmpty(Request.Form["CURRENTSTATE"])) potwierdzenie.CURRENTSTATE = Request.Form["CURRENTSTATE"];
135                if (!String.IsNullOrEmpty(Request.Form["DATATRANSMISJI"])) potwierdzenie.DATATRANSMISJI = Convert.ToDateTime(Request.Form["DATATRANSMISJI"]);
136                if (!String.IsNullOrEmpty(Request.Form["EVENTTYPE"])) potwierdzenie.EVENTTYPE = Convert.ToBoolean(Request.Form["EVENTTYPE"]);
137                if (!String.IsNullOrEmpty(Request.Form["MERCHANTNUMBER"])) potwierdzenie.MERCHANTNUMBER = Request.Form["MERCHANTNUMBER"];
138                if (!String.IsNullOrEmpty(Request.Form["ORDERNUMBER"])) potwierdzenie.ORDERNUMBER = Convert.ToInt32(Request.Form["ORDERNUMBER"]);
139                if (!String.IsNullOrEmpty(Request.Form["PAYMENTNUMBER"])) potwierdzenie.PAYMENTNUMBER = Convert.ToBoolean(Request.Form["PAYMENTNUMBER"]);
140                if (!String.IsNullOrEmpty(Request.Form["PAYMENTTYPE"])) potwierdzenie.PAYMENTTYPE = Convert.ToBoolean(Request.Form["PAYMENTTYPE"]);
141                if (!String.IsNullOrEmpty(Request.Form["PREVIOUSSTATE"])) potwierdzenie.PREVIOUSSTATE = Request.Form["PREVIOUSSTATE"];
142                if (!String.IsNullOrEmpty(Request.Form["TYPE"])) potwierdzenie.TYPE = Request.Form["TYPE"];
143                if (!String.IsNullOrEmpty(Request.Form["VALIDATIONCODE"])) potwierdzenie.VALIDATIONCODE = Request.Form["VALIDATIONCODE"];
144                if (!String.IsNullOrEmpty(Request.Form["WITHCVC"])) potwierdzenie.WITHCVC = Request.Form["WITHCVC"];
145
146                _repConfirm.Insert(potwierdzenie);
147
148                if (potwierdzenie.ORDERNUMBER.HasValue)
149                    UpdateStatus(potwierdzenie.ORDERNUMBER.Value, potwierdzenie.CURRENTSTATE);
150
151                content.Content = "OK";               
152            }
153            catch(Exception ex)
154            {
155                content.Content = "FALSE " + ex.Message + " " + ex.GetType();
156            }       
157           
158            return content;
159        }
160
161        private static Payer InitPayer(int idFaktury)
162        {
163            var payer = new Payer {Id_faktury = idFaktury};
164            return payer;
165        }
166
167        private InvoiceDetailsViewData InitInvoiceDetailsViewData(vPlatnosciEcard platnosc)
168        {
169            var invoiceDeatailsViewData = new InvoiceDetailsViewData();
170            invoiceDeatailsViewData.vPlatnosciEcard = platnosc;
171            invoiceDeatailsViewData.Payer = InitPayer(platnosc.ID_faktury);
172            invoiceDeatailsViewData.brutto = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano);
173            return invoiceDeatailsViewData;
174        }
175
176        public int ConvertId(string id)
177        {
178            int id1;
179            return Int32.TryParse(id, out id1) ? id1 : 0;
180        }
181
182        public ErrorViewData IsError(vPlatnosciEcard platnosc)
183        {
184            var errortxt = "";
185           
186            if (platnosc == null)
187                errortxt = _translateManager.Translate("tlumaczenia", "brakdanych");
188            else if (!_funkcjePlatnosci.UserIdentity(platnosc, HttpContext.User.Identity.Name))
189                errortxt = _translateManager.Translate("tlumaczenia","weryfikacja");
190
191            return _funkcjePlatnosci.InitErrorViewData(errortxt,0);
192        }
193
194        public void UpdateStatus(int ordernumber, string currentstate)
195        {
196            var platnosc = _repPayment.Find(p => p.ORDERNUMBER == ordernumber).SingleOrDefault();
197
198            if (platnosc == null || currentstate != ISPAID) return;
199
200            platnosc.Status = true;
201            platnosc.Status_data = DateTime.Now;
202            _repPayment.SubmitChanges();
203        }
204
205        public int CheckConfirm(int idfaktury, int order)
206        {
207            var pl = _repPayment.Find(p => p.ORDERNUMBER == order && p.IDFaktury == idfaktury).SingleOrDefault();
208
209            if (pl != null)
210            {
211                var confirm = _repConfirm.Find(p => p.ORDERNUMBER == order).FirstOrDefault();
212                if (confirm == null) return 0; //potwierdzenie nie przyszlo z eCardu
213            }
214            else
215            {
216                return 2; //nie ma platnosci o takim idfaktury i ordernumber
217            }
218           
219            return 1;    //potwierdzenie przyszlo z eCardu
220        } 
221    }
222}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.