Beispiel #1
0
        public ActionResult CreateTemporary(TraCrfItemViewModel model)
        {
            bool isSuccess = false;

            try
            {
                TemporaryDto item = new TemporaryDto();

                var csfData = _CRFBLL.GetDataById(model.Detail.TraCrfId);

                if (csfData == null)
                {
                    return(HttpNotFound());
                }

                item                 = AutoMapper.Mapper.Map <TemporaryDto>(csfData);
                item.CREATED_BY      = CurrentUser.USER_ID;
                item.CREATED_DATE    = DateTime.Now;
                item.DOCUMENT_STATUS = Enums.DocumentStatus.Draft;
                item.START_DATE      = model.DetailTemporary.StartDate;
                item.END_DATE        = model.DetailTemporary.EndDate;
                item.REASON_ID       = model.DetailTemporary.ReasonId.Value;
                item.BODY_TYPE       = csfData.Body;
                var fleetData    = _fleetBLL.GetVehicleByEmployeeId(csfData.EMPLOYEE_ID, csfData.VEHICLE_TYPE);
                var settingData  = _settingBLL.GetSetting().FirstOrDefault(x => x.SettingGroup == "VEHICLE_TYPE" && x.SettingName == csfData.VEHICLE_TYPE);
                var employeeData = _employeeBLL.GetByID(csfData.EMPLOYEE_ID);
                item.COLOR         = fleetData.Color;
                item.POLICE_NUMBER = csfData.POLICE_NUMBER;
                if (settingData != null)
                {
                    item.VEHICLE_TYPE = settingData.MstSettingId.ToString();
                }

                item.VENDOR_MANUFACTURER = null;
                item.VENDOR_MODEL        = null;
                item.VENDOR_SERIES       = null;
                item.VENDOR_BODY_TYPE    = null;
                item.GROUP_LEVEL         = employeeData.GROUP_LEVEL;
                var tempData = _CRFBLL.SaveTemp(item, model.Detail.ExpectedDate.Value, CurrentUser);

                isSuccess = true;
            }
            catch (Exception ex)
            {
                AddMessageInfo(ex.Message, Enums.MessageInfoType.Error);
            }

            if (!isSuccess)
            {
                return(RedirectToAction("Details", "TraCrf", new { id = model.Detail.TraCrfId, isPersonalDashboard = model.IsPersonalDashboard }));
            }
            AddMessageInfo("Success Add Temporary Data", Enums.MessageInfoType.Success);
            return(RedirectToAction("Edit", "TraCrf", new { id = model.Detail.TraCrfId, isPersonalDashboard = model.IsPersonalDashboard }));
        }
Beispiel #2
0
        public TemporaryDto SaveTemp(TemporaryDto item, DateTime expectedDate, Login CurrentUser)
        {
            TRA_TEMPORARY model;

            if (item == null)
            {
                throw new Exception("Invalid Data Entry");
            }

            try
            {
                if (item.TRA_TEMPORARY_ID > 0)
                {
                    //update
                    model = _temporaryService.GetTemporaryById(item.TRA_TEMPORARY_ID);

                    if (model == null)
                    {
                        throw new BLLException(ExceptionCodes.BLLExceptions.DataNotFound);
                    }

                    Mapper.Map <TemporaryDto, TRA_TEMPORARY>(item, model);
                }
                else
                {
                    var inputDoc = new GenerateDocNumberInput();
                    inputDoc.Month   = DateTime.Now.Month;
                    inputDoc.Year    = DateTime.Now.Year;
                    inputDoc.DocType = (int)Enums.DocumentType.TMP;

                    item.DOCUMENT_NUMBER_TEMP = _docNumberService.GenerateNumber(inputDoc);
                    item.IS_ACTIVE            = true;

                    model = Mapper.Map <TRA_TEMPORARY>(item);
                }

                _temporaryService.saveTemporary(model, CurrentUser);
                var data = _CrfService.GetByNumber(item.DOCUMENT_NUMBER_RELATED);
                data.EXPECTED_DATE = expectedDate;
                _CrfService.SaveCrf(data, null);
                _uow.SaveChanges();
            }
            catch (Exception exception)
            {
                throw exception;
            }

            return(Mapper.Map <TemporaryDto>(model));
        }
Beispiel #3
0
        public bool CheckTempOpenExists(TemporaryDto item)
        {
            var isExist = false;

            var benefitType = _settingService.GetSetting().Where(x => x.SETTING_NAME.ToUpper() == "BENEFIT").FirstOrDefault().MST_SETTING_ID.ToString();

            var existDataOpen = _TemporaryService.GetAllTemp().Where(x => x.EMPLOYEE_ID == item.EMPLOYEE_ID && x.DOCUMENT_STATUS != Enums.DocumentStatus.Cancelled &&
                                                                     x.DOCUMENT_STATUS != Enums.DocumentStatus.Completed &&
                                                                     x.VEHICLE_TYPE == benefitType).ToList();

            if (existDataOpen.Count > 0)
            {
                isExist = true;
            }

            return(isExist);
        }
Beispiel #4
0
        public bool CheckTempExistsInFleet(TemporaryDto item)
        {
            var isExist = false;

            var vehicleType = _settingService.GetSettingById(Convert.ToInt32(item.VEHICLE_TYPE)).SETTING_VALUE.ToUpper();

            var existData = _fleetService.GetFleet().Where(x => x.IS_ACTIVE && x.EMPLOYEE_ID == item.EMPLOYEE_ID &&
                                                           x.VEHICLE_TYPE == vehicleType &&
                                                           item.START_DATE <= x.END_CONTRACT &&
                                                           x.SUPPLY_METHOD == "TEMPORARY").ToList();

            if (existData.Count > 0)
            {
                isExist = true;
            }

            return(isExist);
        }
Beispiel #5
0
        private TempMailNotification ProsesMailNotificationBody(TemporaryDto tempData, TempWorkflowDocumentInput input)
        {
            var bodyMail    = new StringBuilder();
            var rc          = new TempMailNotification();
            var settingData = _settingService.GetSetting().ToList();

            var vehTypeBenefit = settingData.Where(x => x.SETTING_GROUP == "VEHICLE_TYPE" && x.SETTING_NAME == "BENEFIT").FirstOrDefault().MST_SETTING_ID;
            var vendorData     = _vendorService.GetByShortName(tempData.VENDOR_NAME);
            var vendorEmail    = vendorData == null ? string.Empty : vendorData.EMAIL_ADDRESS;
            var vendorName     = vendorData == null ? "Vendor" : vendorData.VENDOR_NAME;

            var isBenefit = tempData.VEHICLE_TYPE == vehTypeBenefit.ToString() ? true : false;

            var webRootUrl        = ConfigurationManager.AppSettings["WebRootUrl"];
            var typeEnv           = ConfigurationManager.AppSettings["Environment"];
            var serverIntranet    = ConfigurationManager.AppSettings["ServerIntranet"];
            var employeeData      = _employeeService.GetEmployeeById(tempData.EMPLOYEE_ID);
            var creatorData       = _employeeService.GetEmployeeById(tempData.EMPLOYEE_ID_CREATOR);
            var fleetApprovalData = _employeeService.GetEmployeeById(tempData.EMPLOYEE_ID_FLEET_APPROVAL);

            var employeeDataEmail      = employeeData == null ? string.Empty : employeeData.EMAIL_ADDRESS;
            var creatorDataEmail       = creatorData == null ? string.Empty : creatorData.EMAIL_ADDRESS;
            var fleetApprovalDataEmail = fleetApprovalData == null ? string.Empty : fleetApprovalData.EMAIL_ADDRESS;

            var employeeDataName      = employeeData == null ? string.Empty : employeeData.FORMAL_NAME;
            var creatorDataName       = creatorData == null ? string.Empty : creatorData.FORMAL_NAME;
            var fleetApprovalDataName = fleetApprovalData == null ? string.Empty : fleetApprovalData.FORMAL_NAME;

            var hrList    = string.Empty;
            var fleetList = string.Empty;

            var hrEmailList    = new List <string>();
            var fleetEmailList = new List <string>();

            var hrRole = settingData.Where(x => x.SETTING_GROUP == EnumHelper.GetDescription(Enums.SettingGroup.UserRole) &&
                                           x.SETTING_VALUE.Contains("HR")).FirstOrDefault().SETTING_VALUE;
            var fleetRole = settingData.Where(x => x.SETTING_GROUP == EnumHelper.GetDescription(Enums.SettingGroup.UserRole) &&
                                              x.SETTING_VALUE.Contains("FLEET")).FirstOrDefault().SETTING_VALUE;

            var hrQuery    = "SELECT 'PMI\\' + sAMAccountName AS sAMAccountName FROM OPENQUERY(ADSI, 'SELECT employeeID, sAMAccountName, displayName, name, givenName, whenCreated, whenChanged, SN, manager, distinguishedName, info FROM ''LDAP://DC=PMINTL,DC=NET'' WHERE memberOf = ''CN = " + hrRole + ", OU = ID, OU = Security, OU = IMDL Managed Groups, OU = Global, OU = Users & Workstations, DC = PMINTL, DC = NET''') ";
            var fleetQuery = "SELECT 'PMI\\' + sAMAccountName AS sAMAccountName FROM OPENQUERY(ADSI, 'SELECT employeeID, sAMAccountName, displayName, name, givenName, whenCreated, whenChanged, SN, manager, distinguishedName, info FROM ''LDAP://DC=PMINTL,DC=NET'' WHERE memberOf = ''CN = " + fleetRole + ", OU = ID, OU = Security, OU = IMDL Managed Groups, OU = Global, OU = Users & Workstations, DC = PMINTL, DC = NET''') ";

            if (typeEnv == "VTI")
            {
                hrQuery    = "SELECT 'PMI\\' + LOGIN AS LOGIN FROM LOGIN_FOR_VTI WHERE AD_GROUP = '" + hrRole + "'";
                fleetQuery = "SELECT 'PMI\\' + LOGIN AS LOGIN FROM LOGIN_FOR_VTI WHERE AD_GROUP = '" + fleetRole + "'";
            }

            EntityConnectionStringBuilder e = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["FMSEntities"].ConnectionString);
            string        connectionString  = e.ProviderConnectionString;
            SqlConnection con = new SqlConnection(connectionString);

            con.Open();
            SqlCommand    query  = new SqlCommand(hrQuery, con);
            SqlDataReader reader = query.ExecuteReader();

            while (reader.Read())
            {
                var hrLogin = "******" + reader[0].ToString() + "',";
                hrList += hrLogin;
            }

            hrList = hrList.TrimEnd(',');

            query  = new SqlCommand(fleetQuery, con);
            reader = query.ExecuteReader();
            while (reader.Read())
            {
                var fleetLogin = "******" + reader[0].ToString() + "',";
                fleetList += fleetLogin;
            }

            fleetList = fleetList.TrimEnd(',');

            var hrQueryEmail    = "SELECT EMAIL FROM " + serverIntranet + ".[dbo].[tbl_ADSI_User] WHERE FULL_NAME IN (" + hrList + ")";
            var fleetQueryEmail = "SELECT EMAIL FROM " + serverIntranet + ".[dbo].[tbl_ADSI_User] WHERE FULL_NAME IN (" + fleetList + ")";

            if (typeEnv == "VTI")
            {
                hrQueryEmail    = "SELECT EMAIL FROM EMAIL_FOR_VTI WHERE FULL_NAME IN (" + hrList + ")";
                fleetQueryEmail = "SELECT EMAIL FROM EMAIL_FOR_VTI WHERE FULL_NAME IN (" + fleetList + ")";
            }

            query  = new SqlCommand(hrQueryEmail, con);
            reader = query.ExecuteReader();
            while (reader.Read())
            {
                hrEmailList.Add(reader[0].ToString());
            }

            query  = new SqlCommand(fleetQueryEmail, con);
            reader = query.ExecuteReader();
            while (reader.Read())
            {
                fleetEmailList.Add(reader[0].ToString());
            }

            reader.Close();
            con.Close();

            switch (input.ActionType)
            {
            case Enums.ActionType.Submit:
                //if submit from FLEET for wtc
                if (tempData.CREATED_BY == input.UserId && !isBenefit)
                {
                    rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Vendor Information Temporary Car";

                    bodyMail.Append("Dear " + vendorName + ",<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("You have new car request. Please check attached file<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Thanks<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Regards,<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Fleet Team");
                    bodyMail.AppendLine();

                    //if vendor exists
                    if (!string.IsNullOrEmpty(vendorEmail))
                    {
                        foreach (var item in input.Attachments)
                        {
                            rc.Attachments.Add(item);
                        }

                        rc.To.Add(vendorEmail);
                    }

                    foreach (var item in fleetEmailList)
                    {
                        rc.CC.Add(item);
                    }

                    rc.CC.Add(employeeDataEmail);
                }
                //if submit from HR for benefit
                if (tempData.CREATED_BY == input.UserId && isBenefit)
                {
                    rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Temporary Car Request";

                    bodyMail.Append("Dear Fleet Team,<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("new temporary car has been recorded as " + tempData.DOCUMENT_NUMBER_TEMP + "<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Please submit detail vehicle information <a href='" + webRootUrl + "/TraTemporary/Edit/" + tempData.TRA_TEMPORARY_ID + "?isPersonalDashboard=False" + "'>HERE</a><br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("For any assistance please contact " + creatorDataName + "<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Thanks<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Regards,<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("HR Team");
                    bodyMail.AppendLine();

                    foreach (var item in fleetEmailList)
                    {
                        rc.To.Add(item);
                    }

                    foreach (var item in hrEmailList)
                    {
                        rc.CC.Add(item);
                    }

                    rc.CC.Add(employeeDataEmail);
                }
                rc.IsCCExist = true;
                break;

            case Enums.ActionType.Approve:
                //if Fleet Approve for benefit
                if (input.UserRole == Enums.UserRole.Fleet && isBenefit)
                {
                    rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Vendor Information Temporary Car";

                    bodyMail.Append("Dear " + vendorName + ",<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("You have new car request. Please check attached file<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Thanks<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Regards,<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Fleet Team");
                    bodyMail.AppendLine();

                    //if vendor exists
                    if (!string.IsNullOrEmpty(vendorEmail))
                    {
                        foreach (var item in input.Attachments)
                        {
                            rc.Attachments.Add(item);
                        }

                        rc.To.Add(vendorEmail);
                    }

                    rc.To.Add(creatorDataEmail);

                    foreach (var item in fleetEmailList)
                    {
                        rc.CC.Add(item);
                    }

                    rc.CC.Add(employeeDataEmail);
                }
                rc.IsCCExist = true;
                break;

            case Enums.ActionType.Reject:
                //if Fleet Reject Benefit
                if (input.UserRole == Enums.UserRole.Fleet && isBenefit)
                {
                    rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Temporary Car Request";

                    bodyMail.Append("Dear " + creatorDataName + ",<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Your temporary car request " + tempData.DOCUMENT_NUMBER_TEMP + " has been rejected by " + fleetApprovalDataName + " for below reason : " + _remarkService.GetRemarkById(input.Comment.Value).REMARK + "<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Please revised and re-submit your request <a href='" + webRootUrl + "/TraTemporary/Edit/" + tempData.TRA_TEMPORARY_ID + "?isPersonalDashboard=False" + "'>HERE</a><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Thanks<br /><br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Regards,<br />");
                    bodyMail.AppendLine();
                    bodyMail.Append("Fleet Team");
                    bodyMail.AppendLine();

                    rc.To.Add(creatorDataEmail);

                    foreach (var item in fleetEmailList)
                    {
                        rc.CC.Add(item);
                    }

                    rc.CC.Add(employeeDataEmail);
                }
                rc.IsCCExist = true;
                break;

            case Enums.ActionType.Completed:
                rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Completed Document";

                bodyMail.Append("Dear " + creatorDataName + ",<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Your temporary car request " + tempData.DOCUMENT_NUMBER_TEMP + " has been completed by system<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Click <a href='" + webRootUrl + "/TraTemporary/Detail/" + tempData.TRA_TEMPORARY_ID + "?isPersonalDashboard=True" + "'>HERE</a> to monitor your request<br />");
                bodyMail.AppendLine();
                bodyMail.Append("Thanks<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Regards,<br />");
                bodyMail.AppendLine();
                bodyMail.Append("Fleet Team");
                bodyMail.AppendLine();

                rc.To.Add(creatorDataEmail);
                rc.CC.Add(employeeDataEmail);
                rc.CC.Add(fleetApprovalDataEmail);
                rc.IsCCExist = true;
                break;

            case Enums.ActionType.Cancel:
                rc.Subject = tempData.DOCUMENT_NUMBER_TEMP + " - Cancelled Document";

                bodyMail.Append("Dear " + employeeDataName + ",<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Your temporary car request " + tempData.DOCUMENT_NUMBER_TEMP + " has been cancelled by " + creatorDataName + "<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Click <a href='" + webRootUrl + "/TraTemporary/Detail/" + tempData.TRA_TEMPORARY_ID + "?isPersonalDashboard=True" + "'>HERE</a> to monitor your request<br />");
                bodyMail.AppendLine();
                bodyMail.Append("Thanks<br /><br />");
                bodyMail.AppendLine();
                bodyMail.Append("Regards,<br />");
                bodyMail.AppendLine();
                bodyMail.Append("Fleet Team");
                bodyMail.AppendLine();

                rc.To.Add(employeeDataEmail);
                rc.CC.Add(creatorDataEmail);

                foreach (var item in fleetEmailList)
                {
                    rc.CC.Add(item);
                }

                rc.IsCCExist = true;
                break;
            }

            rc.Body = bodyMail.ToString();
            return(rc);
        }
Beispiel #6
0
        public TemporaryDto Save(TemporaryDto item, Login userLogin)
        {
            TRA_TEMPORARY model;

            if (item == null)
            {
                throw new Exception("Invalid Data Entry");
            }

            try
            {
                bool changed = false;

                if (item.TRA_TEMPORARY_ID > 0)
                {
                    //update
                    model = _TemporaryService.GetTemporaryById(item.TRA_TEMPORARY_ID);

                    if (model == null)
                    {
                        throw new BLLException(ExceptionCodes.BLLExceptions.DataNotFound);
                    }

                    Mapper.Map <TemporaryDto, TRA_TEMPORARY>(item, model);

                    changed = true;
                }
                else
                {
                    var inputDoc = new GenerateDocNumberInput();
                    inputDoc.Month   = DateTime.Now.Month;
                    inputDoc.Year    = DateTime.Now.Year;
                    inputDoc.DocType = (int)Enums.DocumentType.TMP;

                    item.DOCUMENT_NUMBER_TEMP = _docNumberService.GenerateNumber(inputDoc);
                    item.IS_ACTIVE            = true;
                    item.EMPLOYEE_ID_CREATOR  = userLogin.EMPLOYEE_ID;

                    model = Mapper.Map <TRA_TEMPORARY>(item);
                }

                _TemporaryService.saveTemporary(model, userLogin);
                _uow.SaveChanges();

                //set workflow history
                var input = new TempWorkflowDocumentInput()
                {
                    DocumentId = model.TRA_TEMPORARY_ID,
                    ActionType = Enums.ActionType.Modified,
                    UserId     = userLogin.USER_ID
                };

                if (changed)
                {
                    AddWorkflowHistory(input);
                }
                _uow.SaveChanges();
            }
            catch (Exception exception)
            {
                throw exception;
            }

            return(Mapper.Map <TemporaryDto>(model));
        }