Example #1
0
        public ResponseBase ThemPhieu(string connectString, int stt, int dichvuId, string maphieuDichVu, string maCongViec, string maLoaiCongViec, TimeSpan?serveTimeAllow, DateTime printTime)
        {
            var            rs       = new ResponseBase();
            Q_DailyRequire rq       = null,
                           modelObj = new Q_DailyRequire();
            int _serviceNumber      = 0;

            using (var db = new QMSSystemEntities(connectString))
            {
                if (!string.IsNullOrEmpty(maCongViec) && !string.IsNullOrEmpty(maLoaiCongViec))
                {
                    modelObj = LayGioPhucVuDuKien(db, maCongViec, maLoaiCongViec, modelObj);
                    if (serveTimeAllow.HasValue)
                    {
                        modelObj.ServeTimeAllow = modelObj.ServeTimeAllow.Add(serveTimeAllow.Value);
                    }
                    serveTimeAllow = modelObj.ServeTimeAllow;
                }

                var ser = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId);
                if (ser != null)
                {
                    _serviceNumber = ser.StartNumber;
                    if (!serveTimeAllow.HasValue)
                    {
                        serveTimeAllow = ser.TimeProcess.TimeOfDay;
                    }
                }

                var nv = db.Q_ServiceStep.Where(x => !x.IsDeleted && !x.Q_Service.IsDeleted && x.ServiceId == dichvuId).OrderBy(x => x.Index).FirstOrDefault();
                if (nv == null)
                {
                    rs.IsSuccess = false;
                    rs.Errors.Add(new Error()
                    {
                        MemberName = "Lỗi Nghiệp vụ", Message = "Lỗi: Dịch vụ này chưa được phân nghiệp vụ. Vui lòng liên hệ người quản lý hệ thống. Xin cám ơn!.."
                    });
                }
                else
                {
                    modelObj.TicketNumber          = stt;
                    modelObj.ServiceId             = dichvuId;
                    modelObj.BusinessId            = null;
                    modelObj.PrintTime             = printTime;
                    modelObj.ServeTimeAllow        = serveTimeAllow ?? new TimeSpan(0, 0, 0);
                    modelObj.CustomerName          = ""; // Name;
                    modelObj.CustomerDOB           = 0;  // DOB;
                    modelObj.CustomerAddress       = ""; // Address;
                    modelObj.MaBenhNhan            = ""; // MaBenhNhan;
                    modelObj.MaPhongKham           = ""; // MaPhongKham;
                    modelObj.STT_PhongKham         = maphieuDichVu;
                    modelObj.CarNumber             = ""; // SoXe;
                    modelObj.Q_DailyRequire_Detail = new Collection <Q_DailyRequire_Detail>();

                    var foundService = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId);

                    var detail = new Q_DailyRequire_Detail();
                    detail.Q_DailyRequire = modelObj;
                    detail.MajorId        = nv.MajorId;
                    detail.StatusId       = (int)eStatus.CHOXL;

                    if (foundService != null && foundService.AutoEnd)
                    {
                        detail.StatusId = (int)eStatus.HOTAT;
                        var now     = DateTime.Now;
                        var timeend = foundService.TimeAutoEnd != null ? foundService.TimeAutoEnd.Value.TimeOfDay : new TimeSpan(0, 10, 00);
                        detail.ProcessTime    = now;
                        detail.EndProcessTime = now.AddMinutes(timeend.TotalMinutes);
                    }
                    modelObj.Q_DailyRequire_Detail.Add(detail);
                    db.Q_DailyRequire.Add(modelObj);

                    var sodanggoi = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == dichvuId && x.StatusId == (int)eStatus.DAGXL).OrderByDescending(x => x.ProcessTime).FirstOrDefault();

                    var userIds    = (from x in db.Q_UserMajor where x.MajorId == nv.MajorId && !x.IsDeleted select x.UserId).ToList();
                    var equipCodes = (from x in db.Q_Login where x.StatusId == (int)eStatus.LOGIN && userIds.Contains(x.UserId) && !x.Q_User.IsDeleted select x.EquipCode).ToList();
                    var tq         = (from x in db.Q_Equipment
                                      where
                                      (equipCodes.Count == 0 && userIds.Count > 0 ? userIds.Contains(x.Code) : equipCodes.Contains(x.Code)) &&
                                      !x.IsDeleted &&
                                      !x.Q_Counter.IsDeleted
                                      select x.Q_Counter.Name).ToArray();
                    var tqs = String.Join("@", tq).Replace("@", ("" + System.Environment.NewLine));

                    db.SaveChanges();
                    rs.IsSuccess = true;
                    rs.Data      = (stt - 1);
                    rs.Data_1    = detail.MajorId;
                    rs.Records   = (sodanggoi != null ? sodanggoi.Q_DailyRequire.TicketNumber : 0);
                    rs.Data_2    = tqs;
                    rs.Data_3    = modelObj.TicketNumber;
                    rs.Data_4    = modelObj;
                }
            }
            return(rs);
        }
Example #2
0
        public ResponseBase CapSoPhongKhamKhongHen(string connectString, int dichvuId, DateTime printTime)
        {
            var      rs                  = new ResponseBase();
            var      modelObj            = new Q_DailyRequire();
            int      _serviceStartNumber = 0;
            TimeSpan?serveTimeAllow      = new TimeSpan(0, 0, 0),
                    tgGoiDK              = new TimeSpan(0, 0, 0);

            using (var db = new QMSSystemEntities(connectString))
            {
                var dichvu = db.Q_Service.FirstOrDefault(x => x.Id == dichvuId);
                if (dichvu != null)
                {
                    _serviceStartNumber = dichvu.StartNumber;
                    serveTimeAllow      = dichvu.TimeProcess.TimeOfDay;
                }

                var nv = db.Q_ServiceStep
                         .Where(x => !x.IsDeleted &&
                                !x.Q_Service.IsDeleted &&
                                x.ServiceId == dichvuId)
                         .OrderBy(x => x.Index)
                         .FirstOrDefault();
                if (nv == null)
                {
                    rs.IsSuccess = false;
                    rs.Errors.Add(new Error()
                    {
                        MemberName = "Lỗi Nghiệp vụ", Message = "Lỗi: Dịch vụ này chưa được phân nghiệp vụ. Vui lòng liên hệ người quản lý hệ thống. Xin cám ơn!.."
                    });
                }
                else
                {
                    int stt        = 0;
                    var lastTicket = db.Q_DailyRequire
                                     .Where(x => x.ServiceId == dichvuId &&
                                            x.Type == (int)eDailyRequireType.KhamBenh)
                                     .OrderByDescending(x => x.TicketNumber)
                                     .FirstOrDefault();

                    if (lastTicket != null)
                    {
                        stt = lastTicket.TicketNumber + 1;
                    }
                    else
                    {
                        stt = _serviceStartNumber;
                    }

                    modelObj.TicketNumber          = stt;
                    modelObj.ServiceId             = dichvuId;
                    modelObj.BusinessId            = null;
                    modelObj.PrintTime             = printTime;
                    modelObj.ServeTimeAllow        = serveTimeAllow ?? new TimeSpan(0, 0, 0);
                    modelObj.Type                  = (int)eDailyRequireType.KhamBenh;
                    modelObj.Q_DailyRequire_Detail = new Collection <Q_DailyRequire_Detail>();

                    var detail = new Q_DailyRequire_Detail();
                    detail.Q_DailyRequire = modelObj;
                    detail.MajorId        = nv.MajorId;
                    detail.StatusId       = (int)eStatus.CHOXL;

                    if (dichvu != null && dichvu.AutoEnd)
                    {
                        detail.StatusId = (int)eStatus.HOTAT;
                        var now     = DateTime.Now;
                        var timeend = dichvu.TimeAutoEnd != null ? dichvu.TimeAutoEnd.Value.TimeOfDay : new TimeSpan(0, 10, 00);
                        detail.ProcessTime    = now;
                        detail.EndProcessTime = now.AddMinutes(timeend.TotalMinutes);
                    }
                    modelObj.Q_DailyRequire_Detail.Add(detail);
                    db.Q_DailyRequire.Add(modelObj);

                    var sodanggoi = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == dichvuId && x.StatusId == (int)eStatus.DAGXL).OrderByDescending(x => x.ProcessTime).FirstOrDefault();

                    var userIds    = (from x in db.Q_UserMajor where x.MajorId == nv.MajorId && !x.IsDeleted select x.UserId).ToList();
                    var equipCodes = (from x in db.Q_Login where x.StatusId == (int)eStatus.LOGIN && userIds.Contains(x.UserId) && !x.Q_User.IsDeleted select x.EquipCode).ToList();
                    var tq         = (from x in db.Q_Equipment
                                      where
                                      (equipCodes.Count == 0 && userIds.Count > 0 ? userIds.Contains(x.Code) : equipCodes.Contains(x.Code)) &&
                                      !x.IsDeleted &&
                                      !x.Q_Counter.IsDeleted
                                      select x.Q_Counter.Name).ToArray();
                    var tqs = String.Join("@", tq).Replace("@", ("" + System.Environment.NewLine));

                    db.SaveChanges();
                    rs.IsSuccess = true;
                    rs.Data      = (stt - 1);
                    rs.Data_1    = detail.MajorId;
                    rs.Records   = (sodanggoi != null ? sodanggoi.Q_DailyRequire.TicketNumber : 0);
                    rs.Data_2    = tqs;
                    rs.Data_3    = stt;
                }
            }
            return(rs);
        }
Example #3
0
        public ResponseBaseModel CallAny(string connectString, int userId, int equipCode, int ticket, DateTime date, int serviceType)
        {
            ResponseBaseModel res = new ResponseBaseModel();
            bool hasChange        = false;

            try
            {
                using (db = new QMSSystemEntities(connectString))
                {
                    var oldTickets = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.TicketNumber != ticket && x.UserId == userId && x.EquipCode == equipCode && x.StatusId == (int)eStatus.DAGXL);
                    if (oldTickets != null && oldTickets.Count() > 0)
                    {
                        foreach (var item in oldTickets)
                        {
                            item.StatusId       = (int)eStatus.HOTAT;
                            item.EndProcessTime = DateTime.Now;
                        }
                        hasChange = true;
                    }
                    var equip = db.Q_Equipment.FirstOrDefault(x => !x.IsDeleted && x.Code == equipCode);
                    var check = db.Q_DailyRequire_Detail.FirstOrDefault(x => x.Q_DailyRequire.TicketNumber == ticket && (x.StatusId == (int)eStatus.CHOXL || x.StatusId == (int)eStatus.DAGXL || x.StatusId == (int)eStatus.QUALUOT) && x.Q_DailyRequire.Q_Service.ServiceType == serviceType);
                    if (check != null)
                    {
                        if (check.StatusId != (int)eStatus.DAGXL)
                        {
                            check.UserId      = userId;
                            check.EquipCode   = equipCode;
                            check.StatusId    = (int)eStatus.DAGXL;
                            check.ProcessTime = DateTime.Now;
                        }
                        hasChange  = true;
                        res.Data_3 = new TicketInfo()
                        {
                            RequireDetailId = check.Id,
                            RequireId       = check.DailyRequireId,
                            StartTime       = check.ProcessTime.Value.TimeOfDay,
                            TimeServeAllow  = check.Q_DailyRequire.ServeTimeAllow,
                            TicketNumber    = check.Q_DailyRequire.TicketNumber,
                            CounterId       = equip.CounterId,
                            PrintTime       = check.Q_DailyRequire.PrintTime,
                            EquipCode       = equipCode
                        };
                        db.Database.ExecuteSqlCommand("update Q_Counter set LastCall =" + check.Q_DailyRequire.TicketNumber + ", CurrentNumber=" + check.Q_DailyRequire.TicketNumber + " where Id =" + equip.CounterId);
                    }
                    else
                    {
                        var mj = db.Q_UserMajor.Where(x => !x.IsDeleted && !x.Q_User.IsDeleted && !x.Q_Major.IsDeleted && x.UserId == userId).OrderBy(x => x.Index).FirstOrDefault();
                        if (mj != null)
                        {
                            var rq = db.Q_DailyRequire.FirstOrDefault(x => x.TicketNumber == ticket && x.Q_Service.ServiceType == serviceType);
                            if (rq != null)
                            {
                                var newobj = new Q_DailyRequire_Detail();
                                newobj.DailyRequireId = rq.Id;
                                newobj.MajorId        = mj.MajorId;
                                newobj.UserId         = userId;
                                newobj.EquipCode      = equipCode;
                                newobj.StatusId       = (int)eStatus.DAGXL;
                                newobj.ProcessTime    = DateTime.Now;
                                db.Q_DailyRequire_Detail.Add(newobj);
                                hasChange = true;

                                res.Data_3 = new TicketInfo()
                                {
                                    RequireDetailId = newobj.Id,
                                    RequireId       = newobj.DailyRequireId,
                                    StartTime       = newobj.ProcessTime.Value.TimeOfDay,
                                    TimeServeAllow  = rq.ServeTimeAllow,
                                    TicketNumber    = rq.TicketNumber,
                                    CounterId       = equip.CounterId,
                                    PrintTime       = rq.PrintTime,
                                    EquipCode       = equipCode
                                };

                                db.Database.ExecuteSqlCommand("update Q_Counter set LastCall =" + rq.TicketNumber + ", CurrentNumber=" + rq.TicketNumber + " where Id =" + equip.CounterId);
                            }
                            else
                            {
                                res.IsSuccess = false;
                                res.sms       = "Không tìm thấy số phiếu " + ticket;
                                res.Title     = "Lỗi";
                            }
                        }
                        else
                        {
                            res.IsSuccess = false;
                            res.sms       = "Nhân viên chưa được phân nghiệp vụ";
                            res.Title     = "Lỗi";
                        }
                    }
                    if (hasChange)
                    {
                        db.SaveChanges();
                        res.IsSuccess = true;
                    }
                }
            }
            catch (Exception ex)
            {
                res.IsSuccess = false;
                res.sms       = "Lỗi thực thi dữ liệu";
                res.Title     = "Lỗi";
            }
            return(res);
        }
Example #4
0
        public ResponseBase InsertServiceRequire(Q_DailyRequire model, string connectString)
        {
            using (var db = new QMSSystemEntities(connectString))
            {
                try
                {
                    var result      = new ResponseBase();
                    var checkExists = db.Q_DailyRequire.FirstOrDefault(x => x.PhoneNumber == model.PhoneNumber && x.ServiceId == model.ServiceId);
                    if (checkExists != null)
                    {
                        result.IsSuccess = true;
                        result.Data      = "Khách hàng có Số điện thoại : " + checkExists.PhoneNumber + " <br/>đã đăng ký dịch vụ : " + checkExists.Q_Service.Name + "<br/>được cấp STT : " + checkExists.TicketNumber + "<br/>Thời gian phục vụ dự kiến :" + (checkExists.TGDKien.HasValue ? checkExists.TGDKien.Value.ToString("HH'h : 'mm") : "");
                    }
                    else
                    {
                        var      dichvu       = db.Q_Service.Where(x => x.Id == model.ServiceId).FirstOrDefault();
                        var      serviceMajor = db.Q_ServiceStep.Where(x => !x.IsDeleted).OrderBy(x => x.Index).FirstOrDefault();
                        double   minutes      = 0;
                        DateTime time         = DateTime.Now;
                        if (dichvu != null && serviceMajor != null)
                        {
                            var phieuDV = db.Q_DailyRequire_Detail.Where(x => x.Q_DailyRequire.ServiceId == model.ServiceId).OrderByDescending(x => x.Q_DailyRequire.PrintTime).Select(x => new { PrintTime = x.Q_DailyRequire.PrintTime, TicketNumber = x.Q_DailyRequire.TicketNumber, StatusId = x.StatusId }).ToList();

                            model.PrintTime = time;
                            // model.sta = eStatusName.Wating;
                            if (phieuDV.Count > 0)
                            {
                                model.TicketNumber = phieuDV[0].TicketNumber + 1;
                                var phieuDangXL = phieuDV.Where(x => (int)eStatus.DAGXL == x.StatusId).FirstOrDefault();
                                if (phieuDangXL != null)
                                {
                                    minutes = (dichvu.TimeProcess.TimeOfDay).TotalMinutes * ((int)phieuDV[0].TicketNumber - (int)phieuDangXL.TicketNumber);
                                }
                                else
                                {
                                    minutes = (dichvu.TimeProcess.TimeOfDay).TotalMinutes * phieuDV.Count;
                                }
                                model.TGDKien = time.AddMinutes(minutes);
                            }
                            else
                            {
                                model.TicketNumber = dichvu.StartNumber;
                                model.TGDKien      = time;
                            }

                            Q_DailyRequire_Detail modelDetail = new Q_DailyRequire_Detail();
                            modelDetail.Q_DailyRequire = model;
                            modelDetail.MajorId        = serviceMajor.MajorId;
                            modelDetail.StatusId       = (int)eStatus.CHOXL;

                            model.Q_DailyRequire_Detail = new List <Q_DailyRequire_Detail>();
                            model.Q_DailyRequire_Detail.Add(modelDetail);

                            db.Q_DailyRequire.Add(model);
                            db.SaveChanges();
                            result.IsSuccess = true;
                            result.Data      = "Khách hàng có Số điện thoại : " + model.PhoneNumber + " <br/>đã chọn Dịch vụ : " + dichvu.Name + "<br/>được cấp STT : " + model.TicketNumber + "<br/>Thời gian phục vụ dự kiến :" + model.TGDKien.Value.ToString("HH'h : 'mm");
                        }
                        else
                        {
                            result.IsSuccess = false;
                            result.Errors.Add(new Error()
                            {
                                MemberName = "them", Message = "Không tìm thấy Dịch Vu theo yêu cầu.Vui lòng thử lại."
                            });
                        }
                    }

                    return(result);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }