Пример #1
0
        public ActionResult Edit([Bind(Include = "ID,Adress,Telefon,Epost,Startnummer,Lagnamn,Kanot_Id,Klubb,Klass_Id,HarBetalt,ForseningsavgiftId,Registreringstid,Kommentar,Bana_Id,RabattId,PaysonToken,EvenemangsId,Invoice")] Registreringar registreringar)
        {
            if (ModelState.IsValid)
            {
                db.Entry(registreringar).State = EntityState.Modified;

                var origReg = smuService.Db.Registreringar.Include(r => r.Deltagare).First(r => r.Id == registreringar.Id);

                foreach (var deltagare in origReg.Deltagare)
                {
                    var nyttFornamn   = Request.Form["deltagare_f_" + deltagare.Id];
                    var nyttEfternamn = Request.Form["deltagare_e_" + deltagare.Id];

                    if (!deltagare.Förnamn.Equals(nyttFornamn) || !deltagare.Efternamn.Equals(nyttEfternamn))
                    {
                        deltagare.Förnamn         = nyttFornamn;
                        deltagare.Efternamn       = nyttEfternamn;
                        db.Entry(deltagare).State = EntityState.Modified;
                    }
                }

                if (registreringar.Invoice != null)
                {
                    db.Entry(registreringar.Invoice).State = EntityState.Modified;
                }

                db.SaveChanges();
                return(RedirectToAction("Index", new { id = registreringar.EvenemangsId }));
            }

            SetViewBag(registreringar, registreringar.EvenemangsId.Value);
            SetViewBag(registreringar.EvenemangsId);
            return(View(registreringar));
        }
Пример #2
0
 public static int Kalk(Registreringar registrering)
 {
     return(registrering.Bana.Avgift
            + (registrering.Kanot != null ? registrering.Kanot.Avgift : 0)
            + registrering.Forseningsavgift.Summa
            - registrering.Rabatt.Summa);
 }
Пример #3
0
        public void HarBetalt(Registreringar reg)
        {
            var registrering = GetRegistrering(reg.Id, false);

            registrering.HarBetalt = true;
            UpdateraRegistrering(registrering);
        }
Пример #4
0
        public ActionResult SendInvoice(int?id)
        {
            if (id == null)
            {
                return(ShowError(log, "Kan inte skicka faktura utan id", false));
            }
            Registreringar registreringar = smuService.GetRegistrering(id.Value, true);

            if (registreringar == null)
            {
                return(ShowError(log, "Kan inte hitta registrering med id " + id.Value, false));
            }

            var lyckatsSkicka = false;

            try
            {
                lyckatsSkicka = SkickaFaktura(registreringar);
            } catch (Exception exc)
            {
                TempData["FelMeddelande"] = "Misslyckades med att skicka faktura. Anledning: " + exc.Message;
                LogError(log, "Misslyckades med att skicka faktura. Anledning: " + exc.Message, exc);
            }

            if (lyckatsSkicka)
            {
                TempData["Meddelande"] = "Faktura skickad till " + registreringar.Epost;
            }

            return(RedirectToAction("Index", new { id = registreringar.Evenemang.Id }));
        }
Пример #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            Registreringar registreringar = db.Registreringar.Find(id);

            db.Registreringar.Remove(registreringar);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #6
0
 protected static void DeleteDeltagare(Registreringar registrering)
 {
     var deltagareToDelete = db.DeltagareSet.Where(delt => delt.RegistreringarID == registrering.ID);
     foreach (var deltagare in deltagareToDelete)
     {
         db.DeltagareSet.DeleteObject(deltagare);
     }
 }
Пример #7
0
 public static int Kalk(Registreringar registrering)
 {
     var avgift = registrering.Banor.Avgift
         + (registrering.Kanoter != null ? registrering.Kanoter.Avgift : 0)
         + registrering.Forseningsavgift
         - registrering.Rabatt;
     return avgift != null ? avgift.Value : 0;
 }
Пример #8
0
        public ActionResult AcceptReg(Registreringar registrering, string button)
        {
            try
            {
                if (!string.IsNullOrEmpty(button) && button == "Ändra")
                {
                    return RedirectToAction("Create");
                }

                if (!string.IsNullOrEmpty(button) && button == "Faktura *")
                {
                    return RedirectToAction("Invoice", "Checkout");
                }

                if (!string.IsNullOrEmpty(button) && (button == "Betala" || button == "Klar"))
                {
                    log.Debug("AcceptReg Betala. Lagnamn: " + registrering.Lagnamn);

                    if (Request.IsAuthenticated)
                    {
                        SaveNewRegistration();
                        return RedirectToAction("Index");
                    }

                    var reg = (Registreringar)Session["reg"];

                    // Free start
                    if (Avgift.Kalk(reg) == 0)
                    {
                        reg.HarBetalt = true;
                        SaveNewRegistration();
                        return RedirectToAction("Redirect");
                    }

                    var checkout = new CheckoutModel
                    {
                        Registrering = reg,
                        SenderFirstName = reg.Deltagare[0].Förnamn,
                        SenderLastName = reg.Deltagare[0].Efternamn,
                        SenderEmail = reg.Epost
                    };

                    Session["checkout"] = checkout;

                    return RedirectToAction("Checkout", "Checkout");
                }

                return View(registrering);
            }
            catch (Exception exception)
            {
                return ShowError("Error in POST AcceptReg.", exception);
            }
        }
Пример #9
0
        public ActionResult Create([Bind(Include = "ID,Adress,Telefon,Epost,Ranking,Startnummer,Lagnamn,Kanot,Klubb,Klass,HarBetalt,Forseningsavgift,Registreringstid,Kommentar,Bana,Rabatter,PaysonToken,Evenemang_Id,Invoice")] Registreringar registreringar)
        {
            if (ModelState.IsValid)
            {
                db.Registreringar.Add(registreringar);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            SetViewBag(registreringar, registreringar.EvenemangsId.Value);
            SetViewBag(registreringar.EvenemangsId);
            return(View(registreringar));
        }
Пример #10
0
        /// <summary>
        /// Spara ny registrering i databasen
        /// </summary>
        /// <param name="reg"></param>
        public void SparaNyRegistrering(Registreringar reg)
        {
            log.Debug("Sparar ny registrering");

            try
            {
                reg.Registreringstid = DateTime.Now;

                if (reg.Bana != null)
                {
                    Db.Banor.Attach(reg.Bana);
                }

                if (reg.Kanot != null)
                {
                    Db.Kanoter.Attach(reg.Kanot);
                }

                if (reg.Klass != null)
                {
                    Db.Klasser.Attach(reg.Klass);
                }

                if (reg.Evenemang != null)
                {
                    Db.Evenemang.Attach(reg.Evenemang);
                }

                if (reg.Forseningsavgift != null && reg.ForseningsavgiftId == null)
                {
                    reg.ForseningsavgiftId = reg.Forseningsavgift.Id;
                    reg.Forseningsavgift   = null;
                }

                if (reg.Rabatt != null && reg.RabattId == null)
                {
                    reg.RabattId = reg.Rabatt.Id;
                    reg.Rabatt   = null;
                }

                var ev = Db.Evenemang.Include("Registreringar").Where(e => e.Id == reg.EvenemangsId).FirstOrDefault();
                ev.Registreringar.Add(reg);

                Db.SaveChanges();
            }
            catch (Exception exc)
            {
                log.Error("Error while saving a new registration.", exc);
                throw new Exception("Error while saving a new registration", exc);
            }
        }
Пример #11
0
        // GET: Registreringar/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Registreringar registreringar = db.Registreringar.Find(id);

            if (registreringar == null)
            {
                return(HttpNotFound());
            }
            return(View(registreringar));
        }
Пример #12
0
        public void TabortRegistrering(Registreringar reg)
        {
            try
            {
                Db.Registreringar.Remove(reg);
                Db.SaveChanges();

                log.Debug("Removed registration with id: " + reg.Id + " and Lagnamn: " + reg.Lagnamn);
            }
            catch (Exception exc)
            {
                log.Error("Error while deleting a registration", exc);
                throw new Exception("Error while deleting a registration", exc);
            }
        }
Пример #13
0
 public void UpdateraRegistrering(Registreringar updatedReg)
 {
     try
     {
         log.Debug("Uppdaterar registrering. Lagnamn: " + updatedReg.Lagnamn);
         var origReg = GetRegistrering(updatedReg.Id, false);
         Db.Entry(updatedReg).CurrentValues.SetValues(origReg);
         Db.SaveChanges();
     }
     catch (Exception exc)
     {
         log.Error("Error updating registration", exc);
         throw new Exception("Error while updating a registration", exc);
     }
 }
Пример #14
0
 protected void SkickaRegMail(Registreringar reg)
 {
     try
     {
         smuService.FillRegistrering(reg);
         var appUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
         var link   = appUrl + "signmeup/bekraftelsebetalning/" + reg.Id;
         SendMail.SendRegistration(RenderRazorViewToString("BekraftelseMail", reg), appUrl, link, reg);
         log.Debug("Skickat epost till lagnamn: " + reg.Lagnamn);
     }
     catch (Exception exc)
     {
         log.Error("Unable to send confirmation mail.", exc);
     }
 }
Пример #15
0
        // GET: Registreringar/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Registreringar registreringar = smuService.GetRegistrering(id.Value, true);

            if (registreringar == null)
            {
                return(HttpNotFound());
            }

            SetViewBag(registreringar, registreringar.EvenemangsId.Value);
            SetViewBag(registreringar.EvenemangsId);
            return(View(registreringar));
        }
Пример #16
0
        public Registreringar FillRegistrering(Registreringar reg)
        {
            reg.Evenemang = Db.Evenemang.Find(reg.EvenemangsId);
            reg.Evenemang.Organisation = Db.Organisationer.Find(reg.Evenemang.OrganisationsId);

            if (reg.Rabatt == null && reg.RabattId != 0)
            {
                reg.Rabatt = Db.Rabatter.Find(reg.RabattId);
            }

            if (reg.Forseningsavgift == null && reg.ForseningsavgiftId != 0)
            {
                reg.Forseningsavgift = Db.Forseningsavgift.Find(reg.ForseningsavgiftId);
            }

            return(reg);
        }
Пример #17
0
 protected void SetViewBag(Registreringar reg, int evenemangsId)
 {
     if (reg != null)
     {
         ViewBag.Bana_Id        = new SelectList(smuService.HamtaBanor(reg.EvenemangsId.Value), "ID", "Namn", reg.Bana.Id);
         ViewBag.Kanot_Id       = new SelectList(smuService.HamtaKanoter(reg.EvenemangsId.Value), "ID", "Namn", reg.Kanot.Id);
         ViewBag.Klass_Id       = new SelectList(smuService.HamtaKlasser(reg.EvenemangsId.Value), "ID", "Namn", reg.Klass.Id);
         ViewBag.PlusEllerMinus = EnumHelper.GetSelectList(typeof(TypAvgift));
     }
     else
     {
         ViewBag.Bana_Id        = new SelectList(smuService.HamtaBanor(evenemangsId), "ID", "Namn");
         ViewBag.Kanot_Id       = new SelectList(smuService.HamtaKanoter(evenemangsId), "ID", "Namn");
         ViewBag.Klass_Id       = new SelectList(smuService.HamtaKlasser(evenemangsId), "ID", "Namn");
         ViewBag.PlusEllerMinus = EnumHelper.GetSelectList(typeof(TypAvgift));
     }
 }
Пример #18
0
        protected bool SkickaFaktura(Registreringar reg)
        {
            var fakturaVm = SkapaFakturaVM(reg);

            try
            {
                var appUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
                var link   = appUrl + "signmeup/faktura/" + reg.Id;
                SendMail.SkickaFaktura(RenderRazorViewToString("_faktura", fakturaVm), appUrl, link, fakturaVm);
                log.Debug("Skickat epost till lagnamn: " + reg.Lagnamn);
                return(true);
            }
            catch (Exception exc)
            {
                log.Error("Unable to send confirmation mail.", exc);
            }
            return(false);
        }
Пример #19
0
        protected FakturaVM SkapaFakturaVM(Registreringar reg)
        {
            var evenemang = smuService.HamtaEvenemang(reg.EvenemangsId.Value);
            var arrangor  = smuService.HamtaOrganisation(evenemang.OrganisationsId);

            if (reg.Invoice == null)
            {
                throw new Exception("Registreringen har ingen faktureringsadress.");
            }

            return(new FakturaVM
            {
                Registrering = reg,
                Arrangor = arrangor,
                Evenemangsnamn = evenemang.Namn,
                BetalaSenast = evenemang.FakturaBetaldSenast,
                Fakturaadress = ClassMapper.MappTillInvoiceVM(reg.Invoice),
                Betalningsmetoder = ClassMapper.MappaTillBetalningsmetoderVM(arrangor.Betalningsmetoder)
            });
        }
Пример #20
0
        public ActionResult Create(Registreringar registrering, string sendReg, string Bana, string rabattkod)
        {
            log.Debug("New registration. Lagnamn: " + registrering.Lagnamn);

            try
            {
                // Changed bana
                //if (!string.IsNullOrEmpty(Bana) && string.IsNullOrEmpty(sendReg))
                //{
                //    TrimDeltagare(registrering);
                //    FillViewData();
                //    Session["reg"] = registrering;
                //    return RedirectToAction("Create");
                //}

                registrering.Registreringstid = DateTime.Now;
                registrering.Forseningsavgift = Avgift.Forseningsavgift(db);

                TryValidateModel(registrering);

                if (ModelState.IsValid)
                {
                    if (!string.IsNullOrEmpty(rabattkod))
                    {
                        var discount = db.Rabatter.FirstOrDefault(rabatt => rabatt.Kod.ToLower() == rabattkod.ToLower());
                        if (discount != null)
                        {
                            registrering.Rabatt = discount.Summa;
                            registrering.Kommentar += "Rabattkod använd: " + discount.Kod;
                        }
                        else
                        {
                            TempData["ValidationError"] = "Fel rabattkod angavs.";
                            return RedirectToAction("Create");
                        }
                    }

                    FillRegistrering(registrering);
                    Session["reg"] = registrering;

                    return RedirectToAction("AcceptReg");
                }

                FillViewData();

                return View(registrering);
            }
            catch (Exception exception)
            {
                return ShowError("Error in POST create.", exception);
            }
        }
Пример #21
0
 private static void TrimDeltagare(Registreringar registrering)
 {
     var bana = db.Banor.FirstOrDefault(b => b.ID == registrering.Bana);
     if (registrering.Deltagare.Count > bana.AntalDeltagare)
     {
         for (var i = registrering.Deltagare.Count - 1; i > bana.AntalDeltagare - 1; i--)
         {
             registrering.Deltagare.RemoveAt(i);
         }
     }
     else if (registrering.Deltagare.Count < bana.AntalDeltagare)
     {
         for (var i = registrering.Deltagare.Count; i < bana.AntalDeltagare; i++)
         {
             registrering.Deltagare.Add(new Deltagare());
         }
     }
 }
Пример #22
0
 protected void SaveChanges(Registreringar reg)
 {
     db.Registreringar.ApplyCurrentValues(reg);
     db.SaveChanges();
 }
Пример #23
0
 protected void FillRegistrering(Registreringar registrering)
 {
     registrering.Kanoter = db.Kanoter.First(kanot => kanot.ID == registrering.Kanot);
     registrering.Banor = db.Banor.First(bana => bana.ID == registrering.Bana);
     registrering.Klasser = db.Klasser.First(klass => klass.ID == registrering.Klass);
 }
Пример #24
0
        //
        // GET: /Reg/Create
        public ActionResult Create()
        {
            var start = db.StartOchSlut.Where(startSlut => startSlut.Namn == "Start").FirstOrDefault();
            if (start != null && DateTime.Now < start.Datum && !Request.IsAuthenticated)
            {
                return View("RegNotOpen", start.Datum);
            }

            var s**t = db.StartOchSlut.Where(startSlut => startSlut.Namn == "S**t").FirstOrDefault();
            if (s**t != null && DateTime.Now >= s**t.Datum && !Request.IsAuthenticated)
            {
                return View("RegClosed");
            }

            FillViewData();

            if (Session["reg"] != null)
            {
                return View(Session["reg"]);
            }
            #if DEBUG
            var registrering = new Registreringar
                               {
                                   Lagnamn = "Röda laget",
                                   Adress = "Kätterud 313, 65591, Karlstad",
                                   Bana = 1,
                                   Klass = 1,
                                   Epost = "*****@*****.**",
                                   Kanot = 1,
                                   Klubb = "KMS",
                                   Deltagare = new TrackableCollection<Deltagare> {
                                       new Deltagare {Förnamn = "Martin", Efternamn = "Andersson"},
                                       new Deltagare {Förnamn = "Karin", Efternamn = "Larsson"}
                                   },
                                   Telefon = "1234234234",
                                   Forseningsavgift = Avgift.Forseningsavgift(db)
                               };
            return View(registrering);
            #endif

            return View(new Registreringar {Deltagare = new TrackableCollection<Deltagare> {new Deltagare(), new Deltagare()}, Forseningsavgift = Avgift.Forseningsavgift(db)});
        }
Пример #25
0
        protected void SetAsPaid(Registreringar registration)
        {
            registration.HarBetalt = true;
            SaveChanges(registration);

            try
            {
                FillViewData();
                var appUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
                var link = appUrl + "home/mail/" + registration.ID;
                SendMail.SendRegistration(RenderRazorViewToString("_MailView", registration), appUrl, link, registration.Epost);
                log.Debug("Sent confirmation mail. Lagnamn: " + registration.Lagnamn);
            }
            catch (Exception exc)
            {
                log.Error("Unable to send confirmation mail.", exc);
            }
        }
Пример #26
0
        protected void SaveNewRegistration(Registreringar reg = null)
        {
            if (reg == null)
            {
                reg = (Registreringar)Session["reg"];
            }

            reg.Banor = null;
            reg.Kanoter = null;
            reg.Klasser = null;

            try
            {
                db.Registreringar.AddObject(reg);
                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    log.Error(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                        eve.Entry.Entity.GetType().Name, eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        log.Error(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                            ve.PropertyName, ve.ErrorMessage));
                    }
                }
                throw;
            }
            Session["reg"] = null;
            Session["checkout"] = null;
        }
Пример #27
0
        public ActionResult ShowPaymentError(string logMessage, IDictionary<string, string> response, Registreringar registration)
        {
            var str = new StringBuilder();
            str.Append(logMessage);
            str.Append("\n");

            foreach (KeyValuePair<string, string> error in response)
            {
                str.Append(error.Key + ": " + error.Value);
                str.Append("\n");
            }
            log.Error(str.ToString());

            try
            {
                SendMail.SendErrorMessage(str.ToString());
            }
            catch (Exception exception)
            {
                log.Error("Erro when sending error message.", exception);
            }

            if (response.ContainsKey("errorList.error(0).message"))
            {
                TempData["PaymentErrorMessage"] = response["errorList.error(0).message"];
                TempData["PaymentErrorParameter"] = response["errorList.error(0).parameter"];
            }
            else
            {
                TempData["PaymentErrorMessage"] = "Betalningen avbröts av okänd anledning.";
                TempData["PaymentErrorParameter"] = "Okänd";
            }

            return RedirectToAction("Create", "Home", registration);
        }
Пример #28
0
        public static void SendRegistration(string message, string hostAddress, string link, Registreringar reg)
        {
            try
            {
                message = message.Replace("href=\"/", string.Format("href=\"{0}", hostAddress));
                message = message.Replace("src=\"/", string.Format("src=\"{0}", hostAddress));
                message = message.Replace("<html>", string.Format("<html>Ser meddelandet konstigt ut? Öppna följande adress i en webbläsare: {0}<br/><br/>", link));

                // Create the email object first, then add the properties.
                SendGridMessage myMessage = new SendGridMessage();
                myMessage.AddTo(reg.Epost);
                myMessage.From    = new MailAddress(reg.Evenemang.Organisation.Epost, reg.Evenemang.Organisation.Namn);
                myMessage.Subject = string.Format("Bekräftelse anmälan till " + reg.Evenemang.Namn);
                myMessage.Html    = message;
                myMessage.Text    = "Följ länken för en bekräftelse på din anmälan: " + link;

                // Create credentials, specifying your user name and password.
                var credentials = new NetworkCredential(ConfigurationManager.AppSettings["SendGridUser"], ConfigurationManager.AppSettings["SendGridPwd"]);

                // Create an Web transport for sending email.
                var transportWeb = new Web(credentials);

                // Send the email.
                // You can also use the **DeliverAsync** method, which returns an awaitable task.
                transportWeb.DeliverAsync(myMessage);
            }
            catch (Exception exc)
            {
                ILog log = LogManager.GetLogger("SendMail");
                log.Error("Fel vid skickande av mail.", exc);
            }
        }
Пример #29
0
        public ActionResult Edit(Registreringar registreringar, string sendReg, string Bana)
        {
            try
            {
                // Changed bana
                if (!string.IsNullOrEmpty(Bana) && string.IsNullOrEmpty(sendReg))
                {
                    TrimDeltagare(registreringar);
                    FillViewData();
                    Session["reg"] = registreringar;
                    return View("Create", registreringar);
                }

                TryValidateModel(registreringar);

                if (ModelState.IsValid)
                {
                    var origReg = db.Registreringar.Include("Deltagare").FirstOrDefault(reg => reg.ID == registreringar.ID);

                    // Remove old deltagare
                    DeleteDeltagare(origReg);
                    db.SaveChanges();

                    // Add all new
                    foreach (var deltagare in registreringar.Deltagare)
                    {
                        db.DeltagareSet.AddObject(deltagare);
                    }
                    db.SaveChanges();
                    registreringar.Registreringstid = origReg != null ? origReg.Registreringstid : DateTime.Now;
                    db.Registreringar.ApplyCurrentValues(registreringar);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }

                FillViewData();

                return View("Create", registreringar);
            }
            catch (Exception exception)
            {
                return ShowError("Error in POST Edit.", exception);
            }
        }