Esempio n. 1
0
 public ActionResult Insert(OverTimeModel overTime)
 {
     if (ModelState.IsValid)
     {
         _logic.Create(overTime);
         return(RedirectToAction("manager"));
     }
     AddViewBag(overTime.OvertimeDate.Month,
                overTime.OvertimeDate.Year, overTime.OvertimeEmpId);
     return(View("index"));
 }
Esempio n. 2
0
        public string CreateOverTimeTableInfo(OverTimeModel overTime)
        {
            string s = "<div class=\"d-none position-absolute infoDiv bg-white text-black-50\">";

            s += "<table>";
            s += $"<tr><td>Number of Hourse</td><td>{overTime.OvertimeHours}</td></tr>";
            s += $"<tr><td>Employee Name</td><td>{overTime.EmployeeName}</td></tr>";
            s += $"<tr><td>Number of Hourse</td><td>{overTime.OvertimeComment}</td></tr>";
            s += "</table>";
            s += "</div>";
            return(s);
        }
        public MessageResult UpdateApprove(OverTimeModel overTimeModel)
        {
            try
            {
                _overTimeManagementDAL.UpdateApprovalStatus(overTimeModel.ID, overTimeModel.ApprovalStatus);

                return(new MessageResult
                {
                    Code = 0,
                    Message = "Success"
                });
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA - OvertimeService - UpdateApprove fn",
                                                         TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected,
                               string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
                return(new MessageResult
                {
                    Code = 1,
                    Message = ex.Message
                });
            }
        }
        public OverTimeModel GetById(string Id)
        {
            try
            {
                OverTimeModel overTimeModel = new OverTimeModel();
                int           itemId        = Convert.ToInt32(Id);
                var           overtime      = _overTimeManagementDAL.GetByID(itemId);
                if (overtime != null && overtime.ID > 0)
                {
                    overTimeModel.ID = overtime.ID;
                    overTimeModel.OtherRequirements = overtime.OtherRequirements;
                    overTimeModel.DHComments        = overtime.DHComments;
                    overTimeModel.BODComments       = overtime.BODComments;
                    overTimeModel.SecurityComments  = overtime.SecurityComments;
                    overTimeModel.Requester         = LookupItemHelper.ConvertToModel(overtime.Requester);
                    if (overtime.ApprovedBy != null)
                    {
                        overTimeModel.ApprovedBy = new UserModel {
                            FirstName = overtime.ApprovedBy.FirstName, FullName = overtime.ApprovedBy.FullName, ID = overtime.ApprovedBy.ID, IsGroup = overtime.ApprovedBy.IsGroup, LastName = overtime.ApprovedBy.LastName, UserName = overtime.ApprovedBy.UserName
                        };
                    }

                    overTimeModel.SumOfEmployee = overtime.SumOfEmployee + "";
                    overTimeModel.SumOfMeal     = overtime.SumOfMeal + "";

                    overTimeModel.ApprovalStatus   = overtime.ApprovalStatus;
                    overTimeModel.CommonDepartment = LookupItemHelper.ConvertToModel(overtime.CommonDepartment);

                    overTimeModel.Date = overtime.CommonDate.ToString("s");
                    overTimeModel.FirstApprovedDate = overtime.FirstApprovedDate.ToString(StringConstant.DateFormatddMMyyyyHHmmss);
                    overTimeModel.Modified          = overtime.Modified.ToString(StringConstant.DateFormatddMMyyyyHHmmss);
                    if (overtime.FirstApprovedBy != null)
                    {
                        overTimeModel.FirstApprovedBy = new UserModel {
                            FirstName = overtime.FirstApprovedBy.FirstName, FullName = overtime.FirstApprovedBy.FullName, ID = overtime.FirstApprovedBy.ID, IsGroup = overtime.FirstApprovedBy.IsGroup, LastName = overtime.FirstApprovedBy.LastName, UserName = overtime.FirstApprovedBy.UserName
                        };
                    }
                    overTimeModel.CommonLocation = LookupItemHelper.ConvertToModel(overtime.CommonLocation);
                    overTimeModel.Place          = overtime.Place;
                    overTimeModel.ApprovalStatus = overtime.ApprovalStatus;

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

                    overTimeModel.ApprovedLevel = 0;
                    if (overTimeModel.ApprovalStatus == "true")
                    {
                        overTimeModel.ApprovedLevel = 1; // Truong phong Approved
                        // Check Approved By: BOD
                        var approverInfo = _employeeInfoDAL.GetByADAccount(overtime.ApprovedBy.ID);
                        if (approverInfo.EmployeePosition.LookupId == (int)StringConstant.EmployeePosition.BOD) // BOD Approved
                        {
                            overTimeModel.ApprovedLevel = 2;
                        }
                    }
                    else if (overTimeModel.ApprovalStatus == "false")
                    {
                        overTimeModel.ApprovedLevel = 1; // Truong phong Rejected
                        // Check Approved By: BOD
                        var approverInfo = _employeeInfoDAL.GetByADAccount(overtime.ApprovedBy.ID);
                        if (approverInfo.EmployeePosition.LookupId == (int)StringConstant.EmployeePosition.BOD) // BOD Rejected
                        {
                            overTimeModel.ApprovedLevel = 2;
                        }
                    }
                    else // Check Truong phong co duyet chua
                    {
                        // Check Approved By: BOD
                        var approverInfo = _employeeInfoDAL.GetByADAccount(overtime.ApprovedBy.ID);
                        if (approverInfo.EmployeePosition.LookupId == (int)StringConstant.EmployeePosition.BOD) // BOD Rejected
                        {
                            overTimeModel.ApprovedLevel = 1;
                        }
                    }


                    var OverTimeDetails = _overTimeManagementDetailDAL.GetByOvertimeId(overTimeModel.ID);
                    foreach (var detail in OverTimeDetails)
                    {
                        var overtimeDetailModel = new OvertimeDetailModel();
                        overtimeDetailModel.ID                         = detail.ID;
                        overtimeDetailModel.OvertimeFrom               = detail.OvertimeFrom.ToString();
                        overtimeDetailModel.OvertimeManagementID       = LookupItemHelper.ConvertToModel(detail.OvertimeManagementID);
                        overtimeDetailModel.Employee.LookupId          = detail.Employee.LookupId;
                        overtimeDetailModel.Employee.LookupValue       = detail.Employee.LookupValue;
                        overtimeDetailModel.OvertimeMgmtApprovalStatus = LookupItemHelper.ConvertToModel(detail.ApprovalStatus);
                        overtimeDetailModel.SummaryLinks               = detail.SummaryLinks;
                        overtimeDetailModel.OvertimeTo                 = detail.OvertimeTo.ToString();
                        overtimeDetailModel.Task                       = string.IsNullOrEmpty(detail.SummaryLinks) ? detail.Task : detail.Task + "_" + detail.SummaryLinks;
                        overtimeDetailModel.CompanyTransport           = detail.CompanyTransport;
                        overtimeDetailModel.WorkingHours               = detail.WorkingHours + "";
                        // Grid
                        overtimeDetailModel.FullName         = overtimeDetailModel.Employee.LookupValue + "_" + overtimeDetailModel.Employee.LookupId + "_";
                        overtimeDetailModel.OvertimeHourFrom = detail.OvertimeFrom.Hour + ":" + detail.OvertimeFrom.Minute;
                        overtimeDetailModel.OvertimeHourTo   = detail.OvertimeTo.Hour + ":" + detail.OvertimeTo.Minute;
                        overTimeModel.OvertimeDetailModelList.Add(overtimeDetailModel);
                    }
                }
                return(overTimeModel);
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA - Overtime Service - GetById fn",
                                                         TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected,
                               string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
                return(null);
            }
        }
        public MessageResult InsertOvertime(SPWeb spWeb, OverTimeModel overTimeModel, bool autoovertime = false)
        {
            var  overtimeManagementId = 0;
            bool createNew            = overTimeModel.ID == 0;
            bool breakFunc            = false;
            var  overtimeEntity       = overTimeModel.ToEntity();

            try
            {
                if (createNew == false)
                {
                    var currentItem = _overTimeManagementDAL.GetByID(spWeb, overtimeEntity.ID);

                    string actionType = overTimeModel.ApprovalStatus.ToLower();
                    if (actionType == "true" || actionType == "false" || overTimeModel.RequiredBODApprove == true) // action = approve or reject
                    {
                        string retMsg = GetRequestStatusMessage(currentItem);
                        if (!string.IsNullOrEmpty(retMsg))
                        {
                            breakFunc = true;
                            int errorCode = actionType == "false" ? (int)OverTimeErrorCode.CannotReject : (int)OverTimeErrorCode.CannotApprove;
                            return(new MessageResult {
                                Code = errorCode, Message = retMsg, ObjectId = 0
                            });
                        }
                    }
                    else // action = edit
                    {
                        if (currentItem.ApprovalStatus.ToLower().Equals("false") || currentItem.ApprovalStatus.ToLower().Equals("true"))
                        {
                            breakFunc = true;
                            string retMsg = GetRequestStatusMessage(currentItem);
                            return(new MessageResult {
                                Code = (int)OverTimeErrorCode.CannotSubmit, Message = retMsg, ObjectId = 0
                            });
                        }
                        else if (currentItem.FirstApprovedDate != null && currentItem.FirstApprovedDate != DateTime.MinValue && currentItem.ApprovalStatus == "")
                        {
                            breakFunc = true;
                            string retMsg = WebPageResourceHelper.GetResourceString("RequestStatusInProgress");
                            return(new MessageResult {
                                Code = (int)OverTimeErrorCode.CannotSubmit, Message = retMsg, ObjectId = 0
                            });
                        }
                    }

                    string requestExpiredMsg = MessageResultHelper.GetRequestExpiredMessage(currentItem.RequestDueDate);
                    if (!string.IsNullOrEmpty(requestExpiredMsg))
                    {
                        breakFunc = true;
                        return(new MessageResult {
                            Code = (int)OverTimeErrorCode.CannotApprove, Message = requestExpiredMsg, ObjectId = 0
                        });
                    }

                    overtimeEntity.FirstApprovedDate = currentItem.FirstApprovedDate;
                    if (!string.IsNullOrEmpty(currentItem.ApprovalStatus.Trim()))
                    {
                        breakFunc = true;
                        return(new MessageResult
                        {
                            Code = 0,
                            Message = "Success",
                            ObjectId = overtimeManagementId
                        });
                    }

                    // Update Approver
                    if (!string.IsNullOrEmpty(overTimeModel.ApprovalStatus))
                    {
                        if (!overTimeModel.RequiredBODApprove) // 1 STEP
                        {
                            overtimeEntity.FirstApprovedDate = DateTime.Now;
                        }
                        else // 2 STEPs
                        {
                            if (overTimeModel.ApprovalStatus == "true") // BOD Approve
                            {
                                overtimeEntity.DHComments = currentItem.DHComments;
                            }
                            else if (overTimeModel.ApprovalStatus == "false")                                  // DH/BOD Reject
                            {
                                if (currentItem.FirstApprovedBy != null && currentItem.FirstApprovedBy.ID > 0) // BOD Reject
                                {
                                    overtimeEntity.DHComments = currentItem.DHComments;
                                }
                                else // DH Reject
                                {
                                    overtimeEntity.FirstApprovedDate = DateTime.Now;
                                }
                            }
                        }
                    }
                    else // DH Approve, Waiting BOD
                    {
                        overtimeEntity.FirstApprovedDate = DateTime.Now;
                    }
                }
                else
                {
                    overtimeEntity = _overTimeManagementDAL.SetDueDate(overtimeEntity);
                }

                overtimeManagementId = _overTimeManagementDAL.SaveOrUpdate(spWeb, overtimeEntity);
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA - Overtime Service - InsertOvertime fn",
                                                         TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected,
                               string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
            }
            finally
            {
                if (overtimeManagementId > 0 && breakFunc == false)
                {
                    var overtimeManagementDetailAddNewList = new List <OverTimeManagementDetail>();
                    foreach (var detail in overTimeModel.OvertimeDetailModelList)
                    {
                        var overTimeManagementDetail = new OverTimeManagementDetail();
                        overTimeManagementDetail.Employee.LookupId             = detail.Employee.LookupId;
                        overTimeManagementDetail.OvertimeFrom                  = Convert.ToDateTime(detail.OvertimeFrom);
                        overTimeManagementDetail.OvertimeManagementID.LookupId = overtimeManagementId;
                        overTimeManagementDetail.ApprovalStatus.LookupId       = detail.OvertimeMgmtApprovalStatus.LookupId;
                        overTimeManagementDetail.Task             = detail.Task;
                        overTimeManagementDetail.OvertimeTo       = Convert.ToDateTime(detail.OvertimeTo);
                        overTimeManagementDetail.CompanyTransport = detail.CompanyTransport;
                        overTimeManagementDetail.WorkingHours     = string.IsNullOrEmpty(detail.WorkingHours) ? 0.0 : double.Parse(detail.WorkingHours);
                        overTimeManagementDetail.ID           = detail.ID;
                        overTimeManagementDetail.BatchCommand = EntityBase.BatchCmd.Save;

                        overtimeManagementDetailAddNewList.Add(overTimeManagementDetail);
                    }

                    if (overtimeManagementDetailAddNewList.Count > 0)
                    {
                        if (autoovertime == false)
                        {
                            SPQuery spQuery = new SPQuery()
                            {
                                Query = $"<Where><Eq><FieldRef Name='OvertimeManagementID'/><Value Type='Lookup' LookupId='TRUE'>{overtimeManagementId}</Value></Eq></Where>"
                            };
                            List <OverTimeManagementDetail> details = _overTimeManagementDetailDAL.GetByQuery(spQuery, new string[] { "ID" });
                            _overTimeManagementDetailDAL.DeleteBatch(details);
                        }

                        _overTimeManagementDetailDAL.BulkInsert(overtimeManagementDetailAddNewList);
                    }

                    // Create New -> SendEmailToDepartmentHead
                    overtimeEntity = _overTimeManagementDAL.GetByID(spWeb, overtimeManagementId);
                    if (createNew)
                    {
                        _overTimeManagementDAL.SendEmailToApprover(SPContext.Current.Web, overtimeEntity, (int)StringConstant.EmployeePosition.DepartmentHead);
                        _overTimeManagementDAL.SendEmailToDelegatedApprover(SPContext.Current.Web, overtimeEntity);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(overTimeModel.ApprovalStatus) && overTimeModel.ApprovalStatus.Equals("true")) // Approve
                        {
                            _overTimeManagementDAL.Approve(overtimeManagementId, overTimeModel.ApproverFullName);
                        }
                        else if (!string.IsNullOrEmpty(overTimeModel.ApprovalStatus) && overTimeModel.ApprovalStatus.Equals("false")) // Reject
                        {
                            _overTimeManagementDAL.Reject(overtimeManagementId, overTimeModel.ApproverFullName);
                        }
                        else if (string.IsNullOrEmpty(overTimeModel.ApprovalStatus) && overTimeModel.RequiredBODApprove)
                        {
                            _overTimeManagementDAL.SendEmailToApprover(SPContext.Current.Web, overtimeEntity, (int)StringConstant.EmployeePosition.BOD);
                            _overTimeManagementDAL.SendEmailToDelegatedApprover(SPContext.Current.Web, overtimeEntity);
                        }
                    }
                }
            }

            return(new MessageResult
            {
                Code = 0,
                Message = "Success",
                ObjectId = overtimeManagementId
            });
        }
 public MessageResult InsertOvertime(OverTimeModel overTimeModel)
 {
     return(InsertOvertime(SPContext.Current.Web, overTimeModel));
 }