示例#1
0
        public MessageResult CashierUpdateBusinessTrip(BusinessTripManagementModel businessTripManagementModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (businessTripManagementModel.Id > 0)
                {
                    Biz.Models.BusinessTripManagement businessTripManagement = _businessTripManagementDAL.GetByID(businessTripManagementModel.Id);
                    if (!string.IsNullOrEmpty(businessTripManagementModel.Comment) && businessTripManagementModel.Cashier != null)
                    {
                        EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(SPContext.Current.Site.Url);
                        EmployeeInfo    currentUserInfo  = _employeeInfoDAL.GetByID(businessTripManagementModel.Cashier.LookupId);

                        if (currentUserInfo != null)
                        {
                            businessTripManagement.Comment = businessTripManagement.Comment.BuildComment(string.Format("{0}: {1}", currentUserInfo.FullName, businessTripManagementModel.Comment));
                            _businessTripManagementDAL.SaveOrUpdate(spWeb, businessTripManagement);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msgResult.Code    = (int)BusinessTripErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return(msgResult);
        }
示例#2
0
        private BusinessTripManagementModel ConvertToModel(Biz.Models.BusinessTripManagement businessTripManagement)
        {
            EmployeeInfoDAL             _employeeInfoDAL            = new EmployeeInfoDAL(SPContext.Current.Site.Url);
            BusinessTripManagementModel businessTripManagementModel = new BusinessTripManagementModel()
            {
                Id                        = businessTripManagement.ID,
                Requester                 = businessTripManagement.Requester,
                Department                = businessTripManagement.CommonDepartment,
                Location                  = businessTripManagement.CommonLocation,
                BusinessTripPurpose       = businessTripManagement.BusinessTripPurpose,
                Domestic                  = businessTripManagement.Domestic,
                TransportationType        = businessTripManagement.TransportationType,
                OtherTransportationDetail = businessTripManagement.OtherTransportationDetail,
                TripHighPriority          = businessTripManagement.TripHighPriority,
                HasVisa                   = businessTripManagement.HasVisa,
                HotelBooking              = businessTripManagement.HotelBooking,
                OtherService              = businessTripManagement.OtherService,
                PaidBy                    = businessTripManagement.PaidBy,
                Driver                    = businessTripManagement.Driver,
                Cashier                   = businessTripManagement.Cashier,
                CashRequestDetails        = businessTripManagement.CashRequestDetail,
                OtherRequestDetail        = businessTripManagement.OtherRequestDetail,
                Comment                   = businessTripManagement.Comment,
                ApprovalStatus            = businessTripManagement.ApprovalStatus,
                DH                        = businessTripManagement.DH,
                DirectBOD                 = businessTripManagement.DirectBOD,
                BOD                       = businessTripManagement.BOD,
                AdminDept                 = businessTripManagement.AdminDept,
                CreatedBy                 = businessTripManagement.CreatedBy,
                ModifiedBy                = businessTripManagement.ModifiedBy
            };

            if (businessTripManagement.RequestDueDate != null && businessTripManagement.RequestDueDate != default(DateTime))
            {
                businessTripManagementModel.RequestDueDate = businessTripManagement.RequestDueDate.ToString(StringConstant.DateFormatddMMyyyy2);
                if (businessTripManagement.RequestDueDate.Date < DateTime.Now.Date)
                {
                    //businessTripManagementModel.RequestExpired = true;
                    businessTripManagementModel.RequestExpired = false;
                }
            }

            return(businessTripManagementModel);
        }
示例#3
0
        public BusinessTripManagementModel GetBusinessTripManagementById(string Id)
        {
            BusinessTripManagementModel businessTripManagementModel = new BusinessTripManagementModel();

            try
            {
                int itemId;
                if (!string.IsNullOrEmpty(Id) && int.TryParse(Id, out itemId))
                {
                    Biz.Models.BusinessTripManagement businessTripManagement = _businessTripManagementDAL.GetByID(itemId);
                    businessTripManagementModel = ConvertToModel(businessTripManagement);
                    businessTripManagementModel.EmployeeList = GetBusinessTripEmployeeByParentId(Id, businessTripManagement.CommonDepartment.LookupId);
                    businessTripManagementModel.ScheduleList = GetBusinessTripScheduleByParentId(Id);
                }
            }
            catch { }

            return(businessTripManagementModel);
        }
示例#4
0
        public MessageResult RejectBusinessTrip(BusinessTripManagementModel businessTripManagementModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (businessTripManagementModel.Id > 0)
                {
                    Biz.Models.BusinessTripManagement businessTripManagement = _businessTripManagementDAL.GetByID(businessTripManagementModel.Id);
                    string currentApprovalStatus = businessTripManagement.ApprovalStatus.ToLower();
                    if (currentApprovalStatus == ApprovalStatus.Approved.ToLower() || currentApprovalStatus == ApprovalStatus.Cancelled.ToLower() || currentApprovalStatus == ApprovalStatus.Rejected.ToLower())
                    {
                        return(new MessageResult {
                            Code = (int)BusinessTripErrorCode.CannotReject, Message = MessageResultHelper.GetRequestStatusMessage(currentApprovalStatus), ObjectId = 0
                        });
                    }

                    string requestExpiredMsg = MessageResultHelper.GetRequestExpiredMessage(businessTripManagement.RequestDueDate);
                    if (!string.IsNullOrEmpty(requestExpiredMsg))
                    {
                        return(new MessageResult {
                            Code = (int)BusinessTripErrorCode.CannotReject, Message = requestExpiredMsg, ObjectId = 0
                        });
                    }

                    bool            hasApprovalPermission = HasApprovalPermission(businessTripManagementModel.Id.ToString());
                    DelegationModel delegationModel       = GetDelegatedTaskInfo(businessTripManagementModel.Id.ToString());
                    bool            isDelegated           = (delegationModel != null && delegationModel.Requester.LookupId > 0) ? true : false;
                    if (hasApprovalPermission == false && isDelegated == false)
                    {
                        return(msgResult);
                    }

                    EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(spWeb.Url);
                    EmployeeInfo    approverInfo     = _employeeInfoDAL.GetByADAccount(spWeb.CurrentUser.ID);

                    int assigneeId = hasApprovalPermission == true ? approverInfo.ADAccount.ID : (isDelegated == true ? delegationModel.FromEmployee.ID : 0);

                    TaskManagementDAL      _taskManagementDAL       = new TaskManagementDAL(spWeb.Url);
                    IList <TaskManagement> taskManagementCollection = _taskManagementDAL.GetRelatedTasks(businessTripManagement.ID, StepModuleList.BusinessTripManagement.ToString());
                    if (taskManagementCollection != null && taskManagementCollection.Count > 0)
                    {
                        TaskManagement        taskOfOriginalAssignee = _taskManagementDAL.GetTaskByAssigneeId(taskManagementCollection, assigneeId);
                        List <TaskManagement> relatedTasks           = taskManagementCollection.Where(t => t.ID != taskOfOriginalAssignee.ID).ToList();

                        if (hasApprovalPermission == true)
                        {
                            taskOfOriginalAssignee.TaskStatus      = TaskStatusList.Completed.ToString();
                            taskOfOriginalAssignee.PercentComplete = 1;
                            taskOfOriginalAssignee.TaskOutcome     = TaskOutcome.Rejected.ToString();
                            taskOfOriginalAssignee.Description     = businessTripManagementModel.Comment;
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(taskOfOriginalAssignee);
                        }
                        else if (isDelegated == true)
                        {
                            TaskManagement clonedTask = _taskManagementDAL.CloneTask(taskOfOriginalAssignee);
                            clonedTask.AssignedTo      = approverInfo.ADAccount;
                            clonedTask.TaskStatus      = TaskStatusList.Completed.ToString();
                            clonedTask.PercentComplete = 1;
                            clonedTask.TaskOutcome     = TaskOutcome.Rejected.ToString();
                            clonedTask.Description     = businessTripManagementModel.Comment;
                            relatedTasks.Add(taskOfOriginalAssignee);
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(clonedTask);
                        }
                    }

                    if (!string.IsNullOrEmpty(businessTripManagementModel.Comment))
                    {
                        businessTripManagement.Comment = businessTripManagement.Comment.BuildComment(string.Format("{0}: {1}", approverInfo.FullName, businessTripManagementModel.Comment));
                    }

                    businessTripManagement.ApprovalStatus = ApprovalStatus.Rejected.ToString();
                    _businessTripManagementDAL.SaveOrUpdate(spWeb, businessTripManagement);

                    EmailTemplateDAL _emailTemplateDAL = new EmailTemplateDAL(spWeb.Url);
                    EmailTemplate    emailTemplate     = _emailTemplateDAL.GetByKey("BusinessTripManagement_Reject");
                    EmployeeInfo     toUser            = _employeeInfoDAL.GetByID(businessTripManagement.Requester.LookupId);
                    _businessTripManagementDAL.SendEmail(businessTripManagement, emailTemplate, approverInfo, toUser, spWeb.Url, false);
                }
            }
            catch (Exception ex)
            {
                msgResult.Code    = (int)BusinessTripErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return(msgResult);
        }
示例#5
0
        public MessageResult InsertBusinessTripManagement(BusinessTripManagementModel businessTripManagementModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (businessTripManagementModel.Id > 0)
                {
                    Biz.Models.BusinessTripManagement businessTripObj = _businessTripManagementDAL.GetByID(businessTripManagementModel.Id);
                    if (businessTripObj.ModifiedBy.ID != businessTripObj.CreatedBy.ID && businessTripObj.ApprovalStatus.ToLower() != ApprovalStatus.Rejected.ToLower())
                    {
                        return(new MessageResult {
                            Code = (int)BusinessTripErrorCode.CannotUpdate, Message = MessageResultHelper.GetRequestStatusMessage(businessTripObj.ApprovalStatus), ObjectId = 0
                        });
                    }
                }

                Biz.Models.BusinessTripManagement businessTripManagement = businessTripManagementModel.ToEntity();
                if (businessTripManagementModel.Id <= 0)
                {
                    AdditionalEmployeePositionDAL _additionalEmployeePositionDAL = new AdditionalEmployeePositionDAL(SPContext.Current.Site.Url);
                    if (businessTripManagementModel.Driver == null || (businessTripManagementModel.Driver != null && businessTripManagementModel.Driver.LookupId == 0))
                    {
                        List <Biz.Models.AdditionalEmployeePosition> drivers = _additionalEmployeePositionDAL.GetEmployeesByLevel((int)StringConstant.AdditionalEmployeePosition.Driver, StepModuleList.BusinessTripManagement.ToString());
                        if (drivers != null && drivers.Count > 0)
                        {
                            businessTripManagement.Driver = new LookupItem()
                            {
                                LookupId = drivers[0].Employee.LookupId, LookupValue = drivers[0].Employee.LookupValue
                            };
                        }
                    }

                    if (businessTripManagement.Cashier == null || (businessTripManagement.Cashier != null && businessTripManagement.Cashier.LookupId == 0))
                    {
                        List <Biz.Models.AdditionalEmployeePosition> accountants = _additionalEmployeePositionDAL.GetEmployeesByLevel((int)StringConstant.AdditionalEmployeePosition.Accountant, StepModuleList.BusinessTripManagement.ToString());
                        if (accountants != null && accountants.Count > 0)
                        {
                            businessTripManagement.Cashier = new LookupItem()
                            {
                                LookupId = accountants[0].Employee.LookupId, LookupValue = accountants[0].Employee.LookupValue
                            };
                        }
                    }
                }

                DateTime startTripDate = DateTime.Now;
                List <BusinessTripSchedule> businessTripScheduleCollection = new List <BusinessTripSchedule>();
                if (businessTripManagementModel.ScheduleList != null && businessTripManagementModel.ScheduleList.Count > 0)
                {
                    foreach (BusinessTripScheduleModel businessTripScheduleModel in businessTripManagementModel.ScheduleList)
                    {
                        BusinessTripSchedule businessTripSchedule = businessTripScheduleModel.ToEntity();
                        businessTripScheduleCollection.Add(businessTripSchedule);
                    }
                    startTripDate = businessTripScheduleCollection.Select(e => e.DepartDate).Min().Value;
                }
                businessTripManagement = _businessTripManagementDAL.SetDueDate(businessTripManagement, startTripDate);

                int itemId = _businessTripManagementDAL.SaveOrUpdate(spWeb, businessTripManagement);
                if (itemId > 0)
                {
                    if (businessTripManagementModel.EmployeeList != null && businessTripManagementModel.EmployeeList.Count > 0)
                    {
                        // Edit -> DELETE all details -> Insert new items
                        if (businessTripManagementModel.Id > 0)
                        {
                            List <BusinessTripEmployeeDetail> businessTripEmployeeDetails = _businessTripEmployeeDetailDAL.GetItemsByParentId(businessTripManagementModel.Id);
                            _businessTripEmployeeDetailDAL.DeleteItems(businessTripEmployeeDetails.Select(x => x.ID).ToList());
                        }

                        List <BusinessTripEmployeeDetail> businessTripEmployeeDetailCollection = new List <BusinessTripEmployeeDetail>();
                        foreach (BusinessTripEmployeeModel employee in businessTripManagementModel.EmployeeList)
                        {
                            BusinessTripEmployeeDetail businessTripEmployeeDetail = new BusinessTripEmployeeDetail();
                            businessTripEmployeeDetail.BusinessTripManagementID = new LookupItem()
                            {
                                LookupId = itemId
                            };
                            businessTripEmployeeDetail.Employee = new LookupItem {
                                LookupId = employee.EmployeeId, LookupValue = employee.EmployeeCode
                            };
                            businessTripEmployeeDetailCollection.Add(businessTripEmployeeDetail);
                        }
                        _businessTripEmployeeDetailDAL.SaveOrUpdate(spWeb, businessTripEmployeeDetailCollection);
                    }

                    if (businessTripManagementModel.ScheduleList != null && businessTripManagementModel.ScheduleList.Count > 0)
                    {
                        // Edit -> DELETE all details -> Insert new items
                        if (businessTripManagementModel.Id > 0)
                        {
                            List <BusinessTripSchedule> businessTripSchedules = _businessTripScheduleDAL.GetItemsByParentId(businessTripManagementModel.Id);
                            _businessTripScheduleDAL.DeleteItems(businessTripSchedules.Select(x => x.ID).ToList());
                        }

                        foreach (BusinessTripSchedule businessTripSchedule in businessTripScheduleCollection)
                        {
                            businessTripSchedule.ID = 0;
                            businessTripSchedule.BusinessTripManagementID = new LookupItem()
                            {
                                LookupId = itemId
                            };
                        }
                        _businessTripScheduleDAL.SaveOrUpdate(spWeb, businessTripScheduleCollection);
                    }
                }

                businessTripManagement = _businessTripManagementDAL.GetByID(itemId);
                if ((businessTripManagementModel.Id <= 0 && itemId > 0))
                {
                    _businessTripManagementDAL.StartWorkFlow(businessTripManagement);
                }
            }
            catch (Exception ex)
            {
                msgResult.Code    = (int)BusinessTripErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return(msgResult);
        }