コード例 #1
0
        public JsonResult Create(Payment payment, string type, CreditCardCharge cardCharge, TPCheck tPCheck)
        {
            payment.PaymentDate = DateTime.Now;
            payment.PaymentType = (PaymentType)Enum.Parse(typeof(PaymentType), type);
            db.Payments.Add(payment);
            db.SaveChanges();

            if (payment.PaymentType == PaymentType.CreditCard)
            {
                cardCharge.PaymentId = payment.Id;
                db.CreditCardCharges.Add(cardCharge);
                db.SaveChanges();
            }
            else if (payment.PaymentType == PaymentType.Check)
            {
                tPCheck.PaymentId = payment.Id;
                db.TPChecks.Add(tPCheck);
                db.SaveChanges();
            }
            var clientId = payment.ClientId;
            var amount   = payment.Amount;

            var clientBalance = db.ClientBalances.Find(clientId);

            clientBalance.Subtract(amount);

            Invoice.SubtractIB(amount, clientId);

            ClientWeek.SubtractBD(amount, clientId);

            db.SaveChanges();
            return(Json(new { Amount = payment.Amount }));
        }
コード例 #2
0
        public void Delete(int id)
        {
            Payment payment = db.Payments.Find(id);

            db.Payments.Remove(payment);
            db.ClientBalances.Find(payment.ClientId).Add(payment.Amount);
            db.SaveChanges();
            ClientWeek.AddBD(payment.Amount, payment.ClientId);
        }
コード例 #3
0
        public ActionResult WeekEntry(DateTime weekStart)
        {
            OneWeekModel model = new OneWeekModel();

            ViewBag.AllowDuplicates = ConfigurationManager.AppSettings["AllowDuplicate"] == "1";

            //Add the start/End days
            Tuple <DateTime, DateTime> dates = Utilities.GetWeekStartEndDates(_EndDay, weekStart);

            model.WeekStart = dates.Item1;
            model.WeekEnd   = dates.Item2;

            using (TimeLineDB db = new TimeLineDB())
            {
                List <TimeLineModel> lines = db.TimeLines.Where(x => x.UserID == User.Identity.Name)
                                             .Where(x => x.LineDate >= dates.Item1)
                                             .Where(x => x.LineDate <= dates.Item2)
                                             .ToList();

                model.IsApproved  = lines.Count(x => x.DateApproved == null) == 0 && lines.Count > 0;
                model.IsSubmitted = lines.Count(x => x.DateSubmitted == null) == 0 && lines.Count > 0;

                IEnumerable <string> clients = lines.Select(x => x.ClientID).Distinct();

                foreach (string clientID in clients)
                {
                    ClientWeek week = new ClientWeek();
                    var        temp = db.Clients.Where(x => x.Name_Key == clientID).FirstOrDefault();
                    week.Client = temp;
                    week.Hours  = new Dictionary <int, decimal>();

                    for (int i = 0; i < 7; i++)
                    {
                        decimal dayHours = lines.Where(x => x.ClientID == clientID).Where(x => x.LineDate == weekStart.AddDays(i)).Sum(x => (x.Hours));
                        week.Hours.Add(i, dayHours);
                    }

                    model.Clients.Add(week);
                }
            }

            model.Clients = model.Clients.OrderBy(x => x.Client.sort_name).ToList();

            IEnumerable <SelectListItem> items =
                from client in GetClients()
                where !(model.Clients.Any(x => x.Client.Name_Key == client.Value))
                select new SelectListItem
            {
                Text  = client.Text,
                Value = client.Value
            };

            model.NewClients = items;

            return(View("WeekEntry", model));
        }
コード例 #4
0
        public ActionResult Create(ClientDay day)
        {
            try
            {
                var weekStart = day.StartTime.AddDays(-(int)day.StartTime.DayOfWeek).Date;
                var clientId  = day.ClientId;
                var weeks     = db.ClientWeeks.Include(w => w.Days).AsEnumerable().Where(w =>
                                                                                         w.ClientId == clientId &&
                                                                                         w.StartDate.AddDays(-(int)w.StartDate.DayOfWeek) == weekStart);

                var week = weeks.SingleOrDefault(w => w.Billed == false);
                if (week == null)
                {
                    var parsha = db.ParshaWeeks.SingleOrDefault(p => p.StartDate == weekStart);

                    if (parsha == null)
                    {
                        var newParsha = new ParshaWeek(weekStart);
                        db.ParshaWeeks.Add(newParsha);
                        db.SaveChanges();
                        parsha = newParsha;
                    }

                    var newWeek = new ClientWeek(clientId, day.StartTime)
                    {
                        ParshaId = parsha.id
                    };

                    if (weeks.Count() > 0)
                    {
                        newWeek.StartDate = day.StartTime.Date;

                        foreach (var w in weeks)
                        {
                            w.EndDate = w.Days.LastOrDefault().StartTime;
                        }
                    }
                    db.ClientWeeks.Add(newWeek);
                    db.SaveChanges();
                    week = newWeek;
                }
                day.WeekId = week.Id;
                db.ClientDays.Add(day);
                db.SaveChanges();
                week.SetBalanceDue();
                db.SaveChanges();
                return(Json("", JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(e.Message, JsonRequestBehavior.AllowGet));
            }
        }
コード例 #5
0
        public JsonResult Edit(Payment payment, string type, CreditCardCharge cardCharge, TPCheck tPCheck)
        {
            var clientId   = payment.ClientId;
            var oldPayment = db.Payments.Find(payment.Id);

            if (payment.Amount > oldPayment.Amount)
            {
                db.ClientBalances.Find(clientId).Subtract(payment.Amount - oldPayment.Amount);
                ClientWeek.SubtractBD(payment.Amount - oldPayment.Amount, clientId);
            }
            else if (payment.Amount < oldPayment.Amount)
            {
                db.ClientBalances.Find(clientId).Add(oldPayment.Amount - payment.Amount);
                ClientWeek.AddBD(oldPayment.Amount - payment.Amount, clientId);
            }
            payment.PaymentType = (PaymentType)Enum.Parse(typeof(PaymentType), type);
            db.Set <Payment>().AddOrUpdate(payment);
            db.SaveChanges();

            if (payment.PaymentType == PaymentType.CreditCard)
            {
                cardCharge.PaymentId = payment.Id;
                db.Set <CreditCardCharge>().AddOrUpdate(cardCharge);
                db.SaveChanges();
                var charge = db.CreditCardCharges.Include(c => c.Card).SingleOrDefault(c => c.PaymentId == payment.Id);
                var card   = db.CreditCards.Find(charge.CardId);
                return(Json(new { Id = payment.Id, PaymentDate = payment.PaymentDate, Amount = payment.Amount, PaymentType = payment.PaymentType, Name = card.Name, CardEnding = card.CardNumber.Substring(card.CardNumber.Length - 4), Location = charge.Location }));
            }
            else if (payment.PaymentType == PaymentType.Check)
            {
                tPCheck.PaymentId = payment.Id;
                db.Set <TPCheck>().AddOrUpdate(tPCheck);
                db.SaveChanges();
                var check = db.TPChecks.Find(payment.Id);
                return(Json(new { Id = payment.Id, PaymentDate = payment.PaymentDate, Amount = payment.Amount, PaymentType = payment.PaymentType, Memo = check.Memo }));
            }
            return(Json(payment));
        }