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

Wersja 969, 11.2 KB (wprowadzona przez marek, 16 years temu)

re #215

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