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

Wersja 926, 12.2 KB (wprowadzona przez alina, 16 years temu)

re #215 edycja akcji ok, nie wyswietlamy komunikatu,ze transakcja sie powiodla, jesli nie przyszlo potwierdzenie z eCardu.

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