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

Wersja 919, 11.6 KB (wprowadzona przez alina, 16 years temu)

re #215 testy dla controlera merchant, dodanie do linku powrotnego parametru ordernumber, dodanie komunikatu do akcji fail,

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