Exemplo n.º 1
0
        public ActionResult Create(ShareModel share)
        {
            //IEnumerable<ApplicationUserModel> usersWithShares = shareBPL.GetAllUsersWithShareHoldingSummary();
            IEnumerable<ShareModel> usersWithShares = shareBPL.GetShareTransactionHistoryForAllUser();
            SelectList users = accountBPL.GetUserSelectList(false);
            ViewBag.Users = users;
            ViewBag.UserShares = usersWithShares;

            if (!ModelState.IsValid)
                return View("Share", share);

            share.CreatedUserId = User.Identity.GetUserId();
            ShareModel addedShare = null;
            try
            {
                addedShare = shareBPL.AddShares(share);
                if (addedShare != null)
                {
                    EmailSender emailSender = new EmailSender();
                    emailSender.SendSharePurchaseInvoice(addedShare);
                }

                TempData["CreateStatus"] = "Success";
                return RedirectToAction("Share");
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ex.Message;
            }

            return View("Share", share);
        }
Exemplo n.º 2
0
        internal ShareModel GetLastShareEntryForShareHolder(string userId)
        {
            ShareModel model = new ShareModel();
            ShareEntity entity = context.Shares.Where(x => x.PurchasedUserId == userId).OrderByDescending(x => x.PurchasedDateTimeUtc).FirstOrDefault();

            if (entity != null) model = ShareMapper.ShareEntityToShareModel(entity);

            return model;
        }
Exemplo n.º 3
0
 public static ListDictionary ShareToDictionary(ShareModel share)
 {
     ListDictionary replacements = new ListDictionary();
     replacements.Add("#FIRSTNAME#", ValueToString(share.FirstName));
     replacements.Add("#QUANTITY#", ValueToString(share.NoOfShares));
     replacements.Add("#RATE#", ValueToString(share.PricePerShare));
     replacements.Add("#GROSSAMOUNT#", ValueToString(share.GrossAmount));
     replacements.Add("#PURCHASEDTIMEUTC#", ValueToString(share.PurchasedDateTimeUtc.ToShortDateString()));
     return replacements;
 }
Exemplo n.º 4
0
        internal ShareModel AddShares(ShareModel shareModel)
        {
            ShareModel addedShare = null;
            ShareEntity entity = ShareMapper.ShareModelToShareEntity(shareModel);
            context.Shares.Add(entity);
            context.SaveChanges();

            //TODO: Navigation Properties should load without following line, find out why its not loading in first insert and then loading in the following inserts for each user.
            ShareEntity addedEntity = context.Shares.Include(x => x.PurchasedUser).Include(x => x.CreatedUser).Single(x => x.Id == entity.Id);
            addedShare = ShareMapper.ShareEntityToShareModel(entity);
            return addedShare;
        }
Exemplo n.º 5
0
        internal ShareModel AddShares(ShareModel shareModel)
        {
            shareModel.Status = "Completed";
            shareModel.Type = "Payment From";

            if(!(shareModel.NoOfShares<0)) return shareRepo.AddShares(shareModel);

            bool isEligible = shareRepo.IsShareHolderEligibleForShareDeduction(shareModel);

            if (isEligible) return shareRepo.AddShares(shareModel);

            throw new Exception("No transaction for selected sponsors on selected date!");
        }
Exemplo n.º 6
0
        internal void SendSharePurchaseInvoice(ShareModel addedShare)
        {
            MailDefinition mail = new MailDefinition();
            mail.BodyFileName = "~/Content/EmailTemplate/Invoice.html";
            mail.Subject = "ETC Canada - Confirmation of Share Purchase " + DateTime.Today.ToShortDateString();
            ListDictionary replacements = ShareToDictionary(addedShare);
            System.Net.Mail.MailMessage message = mail.CreateMailMessage(addedShare.Email, replacements, new System.Web.UI.Control());
            List<string> adminUserEmails = GetAllAdminUsersEmailAddress();
            adminUserEmails.ForEach(x => message.CC.Add(x));
            message.IsBodyHtml = true;

            EmailHandler handler = new EmailHandler(message);
            Thread thread = new Thread(new ThreadStart(handler.SendEmail));
            thread.Start();
        }
Exemplo n.º 7
0
        public static ShareEntity ShareModelToShareEntity(ShareModel model)
        {
            return new ShareEntity
            {
                Amount = model.GrossAmount,
                PricePerShare = model.PricePerShare,
                NoOfShares = model.NoOfShares,
                PurchasedDateTimeUtc = model.PurchasedDateTimeUtc,
                PurchasedUserId = model.PurchasedUserId,
                Type = model.Type,
                Status = model.Status,
                CreatedUserId = model.CreatedUserId

            };
        }
Exemplo n.º 8
0
 internal bool IsShareHolderEligibleForShareDeduction(ShareModel model)
 {
     return context.Shares.Where(x => (x.PurchasedUserId == model.PurchasedUserId) && x.PurchasedDateTimeUtc == model.PurchasedDateTimeUtc).Any();
 }