public JsonResult InsertServiceRequire(Q_DailyRequire model)
        {
            ResponseBase rs;

            try
            {
                rs = BLLServiceInfo.Instance.InsertServiceRequire(model, AppGlobal.Connectionstring);
                if (!rs.IsSuccess)
                {
                    JsonDataResult.Result = "ERROR";
                    JsonDataResult.ErrorMessages.AddRange(rs.Errors);
                }
                else
                {
                    JsonDataResult.Result = "OK";
                    JsonDataResult.Data   = rs.Data;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Json(JsonDataResult));
        }
예제 #2
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);
        }
예제 #3
0
        private Q_DailyRequire LayGioPhucVuDuKien(QMSSystemEntities db, string maCongViec, string maLoaiCongViec, Q_DailyRequire model)
        {
            DateTime processTime = new DateTime(2020, 1, 1, 00, 00, 00);

            string[] codes = maCongViec.Split(',').Select(x => x.Trim().ToUpper()).ToArray();
            if (codes != null && codes.Length > 0)
            {
                var a = (from x in db.Q_WorkDetail
                         where !x.IsDeleted
                         select new ModelSelectItem()
                {
                    Code = x.Q_Works.Code, Name = x.Q_WorkType.Code
                }).ToList();
                var congviecs = (from x in db.Q_WorkDetail
                                 where !x.IsDeleted &&
                                 codes.Contains(x.Q_Works.Code.Trim().ToUpper()) &&
                                 maLoaiCongViec.Trim().ToUpper().Equals(x.Q_WorkType.Code.Trim().ToUpper())
                                 select new { TimeProcess = x.TimeProcess, Id = x.Id }).ToArray();
                model.Q_DailyRequire_WorkDetail = new List <Q_DailyRequire_WorkDetail>();
                for (int i = 0; i < congviecs.Count(); i++)
                {
                    processTime = processTime.AddSeconds(congviecs[i].TimeProcess.TimeOfDay.TotalSeconds);
                    model.Q_DailyRequire_WorkDetail.Add(new Q_DailyRequire_WorkDetail()
                    {
                        Q_DailyRequire = model,
                        WorkDetailId   = congviecs[i].Id
                    });
                }
            }
            model.ServeTimeAllow = processTime.TimeOfDay;
            return(model);
        }
예제 #4
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);
        }
예제 #5
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;
                }
            }
        }
 private ResponseBase InPhieu(Q_DailyRequire model, string maKhoa)
 {
     return(BLLDailyRequire.Instance.API_PrintNewTicket(connectString, model, maKhoa));
 }