コード例 #1
0
        public async Task <HttpResponseMessage> CheckPayments(CommonRequestModels model)
        {
            var payments = await(from p in db.Payments
                                 join pi in db.PaymentItems on p.Id equals pi.Payments_Id
                                 join si in db.SaleInvoices on pi.ReferenceId equals si.Id
                                 join u in db.User on si.Customer_UserAccounts_Id equals u.Id
                                 join b in db.Branches on si.Branches_Id equals b.Id
                                 where p.Cancelled == false && u.UserName == model.Username
                                 select new { p, pi, si, u, b }).ToListAsync();
            List <PaymentApiModels> list = new List <PaymentApiModels>();

            if (payments.Count > 0)
            {
                foreach (var payment in payments.OrderByDescending(x => x.p.Timestamp))
                {
                    list.Add(new PaymentApiModels
                    {
                        No        = "Payment No. " + payment.p.No,
                        Date      = string.Format("{0:yyyy/MM/dd}", TimeZoneInfo.ConvertTimeFromUtc(payment.p.Timestamp, TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"))),
                        Amount    = string.Format("{0} {1:N0}", "Rp ", payment.pi.Amount),
                        Branch    = payment.b.Name,
                        NoInvoice = "Invoice No. " + payment.si.No
                    });
                }
            }

            if (list == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, list));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.OK, list));
            }
        }
コード例 #2
0
        public HttpResponseMessage UserLogin(CommonRequestModels model)
        {
            var user_login = db.User.Where(x => x.UserName == model.Username).FirstOrDefault();
            var user_roles = (from ur in db.UserRole
                              join r in db.Role on ur.RoleId equals r.Id
                              where ur.UserId == user_login.Id
                              select new { ur, r }).ToList();
            string role = "";

            if (user_roles.Count == 1)
            {
                foreach (var r in user_roles)
                {
                    if (r.r.Name.ToLower() == "student" || r.r.Name.ToLower() == "tutor")
                    {
                        role = r.r.Name;
                    }
                }
            }

            UserApiModels userApiModels = new UserApiModels
            {
                Username = user_login.UserName,
                Fullname = user_login.Firstname + " " + user_login.Middlename + " " + user_login.Lastname,
                Email    = user_login.Email,
                Role     = role
            };

            return(Request.CreateResponse(HttpStatusCode.OK, userApiModels));
        }
コード例 #3
0
        public async Task <HttpResponseMessage> Invoices(CommonRequestModels model)
        {
            var invoices = await(from si in db.SaleInvoices
                                 join sii in db.SaleInvoiceItems on si.Id equals sii.SaleInvoices_Id
                                 join u in db.User on si.Customer_UserAccounts_Id equals u.Id
                                 where si.Cancelled == false && u.UserName == model.Username && sii.LessonPackages_Id != null
                                 orderby si.Timestamp descending
                                 select new { si, sii, u }).ToListAsync();
            List <InvoiceApiModels> list = new List <InvoiceApiModels>();

            if (invoices.Count > 0)
            {
                foreach (var invoice in invoices)
                {
                    string package_name;
                    if (invoice.sii.LessonPackages_Id.HasValue)
                    {
                        var a = await db.LessonPackages.Where(x => x.Id == invoice.sii.LessonPackages_Id).FirstOrDefaultAsync();

                        package_name = a.Name;
                    }
                    else if (invoice.sii.Products_Id.HasValue)
                    {
                        var a = await db.Products.Where(x => x.Id == invoice.sii.Products_Id).FirstOrDefaultAsync();

                        package_name = a.Description;
                    }
                    else if (invoice.sii.Services_Id.HasValue)
                    {
                        var a = await db.Services.Where(x => x.Id == invoice.sii.Services_Id).FirstOrDefaultAsync();

                        package_name = a.Description;
                    }
                    else
                    {
                        package_name = string.Empty;
                    }

                    list.Add(new InvoiceApiModels
                    {
                        SaleInvoiceItems_Id = invoice.sii.Id,
                        No             = "Invoice No. " + invoice.si.No,
                        Package        = package_name,
                        Price          = string.Format("{0} {1:N0}", "Rp", invoice.sii.Price),
                        Due            = string.Format("{0} {1:N0}", "Rp", invoice.si.Due),
                        RemainingHours = string.Format("Avail. {0} of {1} hours", invoice.sii.SessionHours_Remaining.Value, invoice.sii.SessionHours.Value),
                        Status         = invoice.si.Due > 0 ? "Waiting Payment" : "Payment Completed"
                    });
                }
            }

            if (list == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, list));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.OK, list));
            }
        }
コード例 #4
0
        public async Task <HttpResponseMessage> TutorSchedules(CommonRequestModels model)
        {
            var result = await db.TutorSchedules.Where(x => x.Id.ToString() == model.ReffId).FirstOrDefaultAsync();

            if (result == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, result));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.OK, result));
            }
        }
コード例 #5
0
        public async Task <HttpResponseMessage> ScheduleAdd(TutorScheduleApiModels model)
        {
            string        user_id = db.User.Where(x => x.UserName == model.Username).FirstOrDefault().Id;
            DayOfWeekEnum dow     = (DayOfWeekEnum)Enum.Parse(typeof(DayOfWeekEnum), model.Day);
            DateTime      _start  = DateTime.Parse(model.Start);
            DateTime      start   = new DateTime(1970, 1, 1, _start.Hour, _start.Minute, 0);
            DateTime      _end    = DateTime.Parse(model.End);
            DateTime      end     = new DateTime(1970, 1, 1, _end.Hour, _end.Minute, 0);

            CommonRequestModels data = new CommonRequestModels();

            var isExist = await db.TutorSchedules
                          .Where(x => x.Tutor_UserAccounts_Id == user_id &&
                                 x.DayOfWeek == dow &&
                                 x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync();

            if (isExist != null)
            {
                data.Message = "This schedule already exist.";
            }
            else
            {
                if (start.Hour > end.Hour || (start.Hour == end.Hour && start.Minute > end.Minute))
                {
                    data.Message = "The Start Time cannot greater than End Time";
                }
            }

            if (string.IsNullOrEmpty(data.Message))
            {
                TutorSchedulesModels tutorSchedulesModels = new TutorSchedulesModels
                {
                    Id = Guid.NewGuid(),
                    Tutor_UserAccounts_Id = user_id,
                    DayOfWeek             = dow,
                    StartTime             = start,
                    EndTime  = end,
                    IsActive = true,
                    Notes    = model.Notes
                };
                db.TutorSchedules.Add(tutorSchedulesModels);
                await db.SaveChangesAsync();
            }

            return(Request.CreateResponse(HttpStatusCode.OK, data));
        }
コード例 #6
0
        public async Task <HttpResponseMessage> ScheduleEdit(TutorScheduleApiModels model)
        {
            string        user_id = db.User.Where(x => x.UserName == model.Username).FirstOrDefault().Id;
            DayOfWeekEnum dow     = (DayOfWeekEnum)Enum.Parse(typeof(DayOfWeekEnum), model.Day);
            DateTime      _start  = DateTime.Parse(model.Start);
            DateTime      start   = new DateTime(1970, 1, 1, _start.Hour, _start.Minute, 0);
            DateTime      _end    = DateTime.Parse(model.End);
            DateTime      end     = new DateTime(1970, 1, 1, _end.Hour, _end.Minute, 0);

            CommonRequestModels data = new CommonRequestModels();

            var isExist = await db.TutorSchedules
                          .Where(x => x.Id.ToString() != model.Schedule_Id &&
                                 x.Tutor_UserAccounts_Id == user_id &&
                                 x.DayOfWeek == dow &&
                                 x.StartTime == start && x.EndTime == end).FirstOrDefaultAsync();

            if (isExist != null)
            {
                data.Message = "This schedule already exist.";
            }
            else
            {
                if (start.Hour > end.Hour || (start.Hour == end.Hour && start.Minute > end.Minute))
                {
                    data.Message = "The Start Time cannot greater than End Time";
                }
            }

            if (string.IsNullOrEmpty(data.Message))
            {
                var current_data = await db.TutorSchedules.Where(x => x.Id.ToString() == model.Schedule_Id).FirstOrDefaultAsync();

                current_data.Tutor_UserAccounts_Id = user_id;
                current_data.DayOfWeek             = dow;
                current_data.StartTime             = start;
                current_data.EndTime = end;
                //current_data.IsActive = tutorSchedulesModels.IsActive;
                current_data.Notes           = model.Notes;
                db.Entry(current_data).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }

            return(Request.CreateResponse(HttpStatusCode.OK, data));
        }
コード例 #7
0
        public async Task <CommonRequestModels> ScheduleAddApi(string username, string day, string start, string end, string notes)
        {
            using (var client = new HttpClient())
            {
                var formContent = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair <string, string>("username", username),
                    new KeyValuePair <string, string>("day", day),
                    new KeyValuePair <string, string>("start", start),
                    new KeyValuePair <string, string>("end", end),
                    new KeyValuePair <string, string>("notes", notes)
                });

                var request = await client.PostAsync(baseurl + "api/scheduleadd", formContent);

                var content = await request.Content.ReadAsStringAsync();

                CommonRequestModels response = JsonConvert.DeserializeObject <CommonRequestModels>(content);
                return(response);
            }
        }
コード例 #8
0
        public async Task <HttpResponseMessage> Schedules(CommonRequestModels model)
        {
            var user_login = await(from u in db.User
                                   join ur in db.UserRole on u.Id equals ur.UserId
                                   join r in db.Role on ur.RoleId equals r.Id
                                   where u.UserName == model.Username
                                   select new { u, ur, r }).FirstOrDefaultAsync();
            List <ScheduleApiModels> list = new List <ScheduleApiModels>();

            if (user_login.r.Name.ToLower() == "student")
            {
                var items = await(from tss in db.TutorStudentSchedules
                                  join s in db.User on tss.Student_UserAccounts_Id equals s.Id
                                  join t in db.User on tss.Tutor_UserAccounts_Id equals t.Id
                                  join sii in db.SaleInvoiceItems on tss.InvoiceItems_Id equals sii.Id
                                  join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id
                                  where tss.Student_UserAccounts_Id == user_login.u.Id
                                  orderby tss.DayOfWeek
                                  select new { tss, s, t, sii, lp }).ToListAsync();

                foreach (var item in items)
                {
                    list.Add(new ScheduleApiModels
                    {
                        Schedule_Id  = item.tss.Id,
                        TimeSchedule = string.Format("{0}, {1:HH:mm} - {2:HH:mm}", item.tss.DayOfWeek.ToString(), item.tss.StartTime, item.tss.EndTime),
                        Lesson       = item.lp.Name,
                        Tutor        = string.Format("Tutor: {0} {1} {2}", item.t.Firstname, item.t.Middlename, item.t.Lastname),
                        Notes        = string.IsNullOrEmpty(item.tss.Notes) ? string.Empty : string.Format("Notes: {0}", item.tss.Notes),
                        Role         = "student"
                    });
                }
            }
            else //tutor
            {
                var items = await(from ts in db.TutorSchedules
                                  join u in db.User on ts.Tutor_UserAccounts_Id equals u.Id
                                  where ts.Tutor_UserAccounts_Id == user_login.u.Id
                                  orderby ts.DayOfWeek
                                  select new { ts, u }).ToListAsync();

                foreach (var item in items)
                {
                    list.Add(new ScheduleApiModels
                    {
                        Schedule_Id  = item.ts.Id,
                        TimeSchedule = string.Format("Tutor: {0} {1} {2}", item.u.Firstname, item.u.Middlename, item.u.Lastname),
                        Lesson       = string.Format("{0}, {1:HH:mm} - {2:HH:mm}", item.ts.DayOfWeek.ToString(), item.ts.StartTime, item.ts.EndTime),
                        Tutor        = string.IsNullOrEmpty(item.ts.Notes) ? string.Empty : string.Format("Notes: {0}", item.ts.Notes),
                        Notes        = string.Empty,
                        Role         = "tutor"
                    });
                }
            }

            if (list == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, list));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.OK, list));
            }
        }
コード例 #9
0
        public HttpResponseMessage Sessions(CommonRequestModels model)
        {
            var roles = (from u in db.User
                         join ur in db.UserRole on u.Id equals ur.UserId
                         join r in db.Role on ur.RoleId equals r.Id
                         where u.UserName == model.Username
                         select new { u, r }).ToList();
            string role = "";

            if (roles.Count == 1)
            {
                foreach (var r in roles)
                {
                    if (r.r.Name.ToLower() == "student" || r.r.Name.ToLower() == "tutor")
                    {
                        role = r.r.Name;
                    }
                }
            }

            var sessions =
                (role.ToLower() == "student")
                ? (from ls in db.LessonSessions
                   join t in db.User on ls.Tutor_UserAccounts_Id equals t.Id
                   join sii in db.SaleInvoiceItems on ls.SaleInvoiceItems_Id equals sii.Id
                   join si in db.SaleInvoices on sii.SaleInvoices_Id equals si.Id
                   join s in db.User on si.Customer_UserAccounts_Id equals s.Id
                   join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id
                   where s.UserName == model.Username
                   select new { ls, t, sii, si, s, lp }).ToList()
                : (role.ToLower() == "tutor")
                    ? (from ls in db.LessonSessions
                       join t in db.User on ls.Tutor_UserAccounts_Id equals t.Id
                       join sii in db.SaleInvoiceItems on ls.SaleInvoiceItems_Id equals sii.Id
                       join si in db.SaleInvoices on sii.SaleInvoices_Id equals si.Id
                       join s in db.User on si.Customer_UserAccounts_Id equals s.Id
                       join lp in db.LessonPackages on sii.LessonPackages_Id equals lp.Id
                       where t.UserName == model.Username
                       select new { ls, t, sii, si, s, lp }).ToList()
                   : null;
            List <SessionApiModels> list = new List <SessionApiModels>();

            if (sessions.Count > 0)
            {
                foreach (var session in sessions.OrderByDescending(x => x.ls.Timestamp))
                {
                    list.Add(new SessionApiModels
                    {
                        SaleInvoiceItems_Id = session.sii.Id,
                        Date    = string.Format("{0:yyy/MM/dd HH:mm}", session.ls.Timestamp),
                        Lesson  = session.lp.Name,
                        Hour    = session.ls.SessionHours,
                        Tutor   = session.t.Firstname + " " + session.t.Middlename + " " + session.t.Lastname,
                        Student = session.s.Firstname + " " + session.s.Middlename + " " + session.s.Lastname,
                        Review  = session.ls.Review
                    });
                }
            }

            if (list == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, list));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.OK, list));
            }
        }