public Error InsertOrUpdateCreditClaimHeader(CreditClaimHeaderModel cch, string lockGuid)
        {
            var error = new Error();

            error = validateModel(cch);
            if (!error.IsError)
            {
                // Check that the lock is still current
                if (!db.IsLockStillValid(typeof(CreditClaimHeaderModel).ToString(), cch.Id, lockGuid))
                {
                    error.SetError(EvolutionResources.errRecordChangedByAnotherUser, "");
                }
                else
                {
                    CreditClaimHeader temp = null;
                    if (cch.Id != 0)
                    {
                        temp = db.FindCreditClaimHeader(cch.Id);
                    }
                    if (temp == null)
                    {
                        temp = new CreditClaimHeader();
                    }

                    Mapper.Map <CreditClaimHeaderModel, CreditClaimHeader>(cch, temp);

                    db.InsertOrUpdateCreditClaimHeader(temp);
                    cch.Id = temp.Id;
                }
            }
            return(error);
        }
        private CreditClaimHeaderModel getCreditClaimHeader()
        {
            var cchm = new CreditClaimHeaderModel();

            cchm.ReplacementRequired = false;
            var error = SalesService.InsertOrUpdateCreditClaimHeader(cchm, "");

            return(cchm);
        }
        private Error validateModel(CreditClaimHeaderModel model)
        {
            var error = isValidNonRequiredString(getFieldValue(model.NotesAndComments), 2048, "NotesAndComments", EvolutionResources.errTextDataRequiredInField);

            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.PickupAddress), 255, "PickupAddress", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.RejectionReasonComments), 250, "RejectionReasonComments", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.ConNote), 30, "ConNote", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.PickupBoxDimensions), 100, "PickupBoxDimensions", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.PickupSpecialInstructions), 255, "PickupSpecialInstructions", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.CustomerContactEmail), 100, "CustomerContactEmail", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.CustomerContactPhone), 20, "CustomerContactPhone", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.CustomerReference), 30, "CustomerReference", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.ReturnAddress), 255, "ReturnAddress", EvolutionResources.errTextDataRequiredInField);
            }
            if (!error.IsError)
            {
                error = isValidNonRequiredString(getFieldValue(model.DeliveryAddress), 255, "DeliveryAddress", EvolutionResources.errTextDataRequiredInField);
            }
            return(error);
        }
        public void IsCreditClaimReplacementOrderTest()
        {
            var testUser     = GetTestUser();
            var testCompany  = GetTestCompany(testUser);
            var testCustomer = GetTestCustomer(testCompany, testUser);
            var testSale     = GetTestSalesOrderHeader(testCompany, testCustomer, testUser, 10);

            // Test there is no credit replacement order
            var result = SalesService.IsCreditClaimReplacementOrder(testSale);

            Assert.IsTrue(result == false, "Error: true was returned when false was expected");

            // Create a Credit Claim Header
            CreditClaimHeaderModel cchm = getCreditClaimHeader();

            // Create CCRO Model & Insert it to db
            CreditClaimReplacementOrderModel model = getCreditClaimReplacementOrder(testCompany, cchm, testSale);

            SalesService.InsertOrUpdateCreditClaimReplacementOrder(model, "");

            // Read db & Compare db record against Model
            var dbData = db.FindCreditClaimReplacementOrder(model.Id);
            var temp   = SalesService.MapToModel(dbData);

            AreEqual(temp, model);

            // Test there is a credit replacement order
            result = SalesService.IsCreditClaimReplacementOrder(testSale);
            Assert.IsTrue(result == true, "Error: false was returned when true was expected");

            // Delete it
            db.DeleteCreditClaimReplacementOrder(model.Id);

            // Read db - make sure model has been deleted from db
            dbData = db.FindCreditClaimReplacementOrder(model.Id);
            Assert.IsTrue(dbData == null, "Error: ");

            // Test there is no credit replacement order
            result = SalesService.IsCreditClaimReplacementOrder(testSale);
            Assert.IsTrue(result == false, "Error: true was returned when false was expected");
        }
        private CreditClaimReplacementOrderModel getCreditClaimReplacementOrder(CompanyModel company, CreditClaimHeaderModel cch, SalesOrderHeaderModel soh)
        {
            var model = new CreditClaimReplacementOrderModel();

            model.CompanyId           = company.Id;
            model.CreditClaimHeaderId = cch.Id;
            model.SalesOrderHeaderId  = soh.Id;
            return(model);
        }