예제 #1
0
        public GeneralResponse EditDocumentStatus(EditDocumentStatusRequest request)
        {
            GeneralResponse response       = new GeneralResponse();
            DocumentStatus  documentStatus = new DocumentStatus();

            documentStatus = _documentStatusRepository.FindBy(request.ID);

            if (documentStatus != null)
            {
                try
                {
                    documentStatus.ModifiedDate     = PersianDateTime.Now;
                    documentStatus.ModifiedEmployee = _employeeRepository.FindBy(request.ModifiedEmployeeID);
                    documentStatus.DefaultStatus    = request.DefaultStatus;
                    documentStatus.CompleteStatus   = request.CompleteStatus;
                    if (request.DocumentStatusName != null)
                    {
                        documentStatus.DocumentStatusName = request.DocumentStatusName;
                    }

                    if (documentStatus.RowVersion != request.RowVersion)
                    {
                        response.ErrorMessages.Add("EditConcurrencyKey");
                        return(response);
                    }
                    else
                    {
                        documentStatus.RowVersion += 1;
                    }

                    if (documentStatus.GetBrokenRules().Count() > 0)
                    {
                        foreach (BusinessRule businessRule in documentStatus.GetBrokenRules())
                        {
                            response.ErrorMessages.Add(businessRule.Rule);
                        }

                        return(response);
                    }

                    _documentStatusRepository.Save(documentStatus);
                    _uow.Commit();

                    ////response.success = true;
                }
                catch (Exception ex)
                {
                    response.ErrorMessages.Add(ex.Message);
                }
            }
            else
            {
                response.ErrorMessages.Add("NoItemToEditKey");
            }
            return(response);
        }
예제 #2
0
        public GeneralResponse AddDocumentStatus(AddDocumentStatusRequest request)
        {
            GeneralResponse response = new GeneralResponse();

            try
            {
                DocumentStatus documentStatus = new DocumentStatus();
                documentStatus.ID                 = Guid.NewGuid();
                documentStatus.CreateDate         = PersianDateTime.Now;
                documentStatus.CreateEmployee     = _employeeRepository.FindBy(request.CreateEmployeeID);
                documentStatus.DefaultStatus      = request.DefaultStatus;
                documentStatus.CompleteStatus     = request.CompleteStatus;
                documentStatus.DocumentStatusName = request.DocumentStatusName;
                documentStatus.SortOrder          = GetSortOrder();
                documentStatus.RowVersion         = 1;

                #region Validation

                if (documentStatus.GetBrokenRules().Count() > 0)
                {
                    foreach (BusinessRule businessRule in documentStatus.GetBrokenRules())
                    {
                        response.ErrorMessages.Add(businessRule.Rule);
                    }

                    return(response);
                }

                #endregion

                _documentStatusRepository.Add(documentStatus);
                _uow.Commit();

                ////response.success = true;
                response.ID = documentStatus.ID;
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
            }

            return(response);
        }
예제 #3
0
        public GeneralResponse EditDocumentStatuss(IEnumerable <EditDocumentStatusRequest> requests)
        {
            GeneralResponse response       = new GeneralResponse();
            DocumentStatus  documentStatus = new DocumentStatus();

            bool defaultFlag              = false;
            bool completeFlag             = false;
            Guid defaultDocumentStatusID  = Guid.Empty;
            Guid completeDocumentStatusID = Guid.Empty;

            try
            {
                foreach (EditDocumentStatusRequest request in requests)
                {
                    documentStatus = _documentStatusRepository.FindBy(request.ID);

                    documentStatus.ModifiedDate     = PersianDateTime.Now;
                    documentStatus.ModifiedEmployee = _employeeRepository.FindBy(request.ModifiedEmployeeID);

                    #region If Default or Complete status changed, change all entity to remain only one of this fields true

                    if (documentStatus.DefaultStatus != request.DefaultStatus)
                    {
                        documentStatus.DefaultStatus = request.DefaultStatus;
                        defaultFlag = true;
                        if (documentStatus.DefaultStatus)
                        {
                            defaultDocumentStatusID = documentStatus.ID;
                        }
                    }
                    if (documentStatus.CompleteStatus != request.CompleteStatus)
                    {
                        documentStatus.CompleteStatus = request.CompleteStatus;
                        completeFlag = true;
                        if (documentStatus.CompleteStatus)
                        {
                            completeDocumentStatusID = documentStatus.ID;
                        }
                    }

                    #endregion

                    documentStatus.DocumentStatusName = request.DocumentStatusName;

                    #region RowVersion

                    if (documentStatus.RowVersion != request.RowVersion)
                    {
                        response.ErrorMessages.Add("EditConcurrencyKey");
                        return(response);
                    }
                    else
                    {
                        documentStatus.RowVersion += 1;
                    }

                    #endregion

                    #region Validation

                    if (documentStatus.GetBrokenRules().Count() > 0)
                    {
                        foreach (BusinessRule businessRule in documentStatus.GetBrokenRules())
                        {
                            response.ErrorMessages.Add(businessRule.Rule);
                        }

                        return(response);
                    }

                    #endregion

                    _documentStatusRepository.Save(documentStatus);
                }

                #region if default or complete flag is true change all entity to remain one of them true

                if (defaultFlag)
                {
                    foreach (var document_Status in _documentStatusRepository.FindAll())
                    {
                        if (document_Status.ID == defaultDocumentStatusID)
                        {
                            document_Status.DefaultStatus = true;
                        }
                        else
                        {
                            document_Status.DefaultStatus = false;
                        }

                        _documentStatusRepository.Save(document_Status);
                    }
                }

                if (completeFlag)
                {
                    foreach (var document_Status in _documentStatusRepository.FindAll())
                    {
                        if (document_Status.ID == completeDocumentStatusID)
                        {
                            document_Status.CompleteStatus = true;
                        }
                        else
                        {
                            document_Status.CompleteStatus = false;
                        }

                        _documentStatusRepository.Save(document_Status);
                    }
                }

                #endregion

                _uow.Commit();

                ////response.success = true;
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
            }

            return(response);
        }